Как бы выбрать первый элемент <p>
в следующем <div>
с jQuery?jQuery первый из типов селектор?
<div>
<h1>heading</h1>
<p>How do I select this element with jQuery?</p>
<p>Another paragraph</p>
</div>
Как бы выбрать первый элемент <p>
в следующем <div>
с jQuery?jQuery первый из типов селектор?
<div>
<h1>heading</h1>
<p>How do I select this element with jQuery?</p>
<p>Another paragraph</p>
</div>
Если у вас есть ссылка на div
уже:
$(yourDiv).find("p").eq(0);
Если первый p
всегда будет прямым потомком div
, вы могли бы использовать children
вместо find
.
Некоторые варианты включают:
$(yourDiv).find("p:eq(0)"); //Slower than the `.eq` method
$(yourDiv).find("p:first");
$(yourDiv).find("p").first() //Just an alias for `.eq(0)`
Обратите внимание, что метод eq
всегда будет самый быстрый способ сделать это. Вот результаты quick comparison из eq
метода, :eq
селектора и :first
селектора (я не заморачиваться с методом first
, так как это всего лишь псевдоним eq(0)
):
$('div p:first')
ответ был слишком короткий для публикации без этого бесполезного предложения.
Редактировать Это определенно медленный вариант. Посмотрев на тест скорости Джеймса, похоже, что селектора jQuery работают лучше всего, когда они переключаются с селекторов css.
@JamesAllardice Это равно .First(), потому что оба соответствуют одному элементу. Является ли это желаемым эффектом, зависит от проблемы Web_Designer. – Colin
@Farrell - Да, он равен '.first' и': first' и ': eq (0)' и ': lt (1)' (существует так много способов написания одного и того же с jQuery), но это должно быть постом кучки. –
@rkw - Обратите внимание, что ': nth-child' не эквивалентен и в этом случае работать не будет. Вы правы в том, что селекторы работают лучше всего, когда у них есть эквивалент CSS, особенно в современных браузерах, потому что вместо Sizzle можно использовать собственные методы 'querySelector' и' querySelectorAll'. –
$('div p').first()
Должно работать. Я думаю.
$ ("div p"). First();
или $ ('div p: first');
Ссылка: http://api.jquery.com/first/
Имейте в виду, что первый() соответствует только один элемент, то селектор: первый-ребенок может соответствовать более чем одному: один для каждого родителя.
Вы почти знаете ответ (из вашего заголовка сообщения). В jQuery есть селектор, который называется :first-of-type
. Используйте его, чтобы найти и добавить класс к первому р теге автоматически, например, так:
$("div p:first-of-type").addClass('someClass');
: первый тип и последний тип доступны с jQuery 1.9 – Bell
Это должно работать
$("div p:first-of-type").css("font-size: 10px");
Вышеприведенный код находит первый абзац в DIV, как @Denver заострены и изменены его fonts-size
к 10px
Вот пример, объясняющий еще больше о jQuery first-of-type selector
Ницца, это выглядит убедительно, спасибо! –
Без проблем, рад, что я мог бы помочь :) Если вам интересно, еще одной альтернативой будет:: lt (1) '. Я почти уверен, что будет медленнее метод '.eq', но это еще один способ добиться того же. –
Вау, это значительная разница. Я не понимаю, почему jQuery позволит: сначала.В фоновом режиме он должен быть преобразован в: nth-child (1). http://jsperf.com/jq-first-vs-eq/3 Есть ли причина, по которой это не сделано? – rkw