Я использую (пытающийся использовать) jQuery для добавления класса к первому абзацу каждого отделения с классом ".djBio", которым Моя проблема состоит в том, что это только добавляет класс к первому div.djBio, не все отделения с тем классом. Вот код. Я также использую необычную букву плагин jQuery для добавления буквицы к первому абзацу (который также только относится к первому div.djBio, не всем),
jQuery(function( $ ){
$('.servicesContent p:first, .about-usContent p:first, .djBio p:first').fancyletter().addClass('firstP');
});
Большое спасибо за Вашу справку!
В какой-то момент вы наткнулись на то, о чем все спотыкаются: : сначала
на самом деле не означает то, что вы (сначала) думаю, это значит. : first
будет только когда-либо возвращать (максимум) один элемент . Лучший способ решить вашу проблему - использовать each ()
:
$(function() {
$(".servicesContent, .about-usContent, .djBio").each(function() {
$(this).find("p:first").addClass("...");
});
});
Как вы обнаружили, селектор : first
соответствует первому элементу селектора, к которому вы его применили, и вернет только (максимум) один элемент.
Вам необходимо использовать селектор : first-child
, который будет соответствовать любому элементу, являющемуся первым дочерним элементом своего родителя. (Обратите внимание, что если перед первым p
есть другой элемент, он все равно не будет работать)
Вы можете переписать код следующим образом, чтобы добавить класс ко всем первым тегам p:
$('.servicesContent, .about-usContent, .djBio').each(function() {
$(this).find('p:first').fancyletter().addClass('firstP');
});
Проблема с вашим кодом в том, что он находит только первый экземпляр тега ap внутри элемента с данным классом.