Відповіді:
Чому б спочатку не переглянути сторінку (коротких) селекторів?
Ось він: :eq()оператор. Він використовується так само get(), але повертає об’єкт jQuery.
Або ви можете також використовувати .eq()функцію.
.eq()більше підходить для питання ОП. :eq()використовується в параметрі рядка до $, тоді .eq()як це метод для існуючого об'єкта jQuery.
$('select').find('option').eq(n)в основному буде ігнорувати групування та отримувати всі варіанти в цілому. Якщо ви хочете, щоб це було в групі, щось подібне необхідно:$('select').find('optgroup').each(function() { $(this).find('option').eq(n)...; })
Ви можете використовувати : селектор eq , наприклад:
$("td:eq(2)").css("color", "red"); // gets the third td element
Або функція eq (int) :
$("td").eq(2).css("color", "red");
Також пам’ятайте, що індекси базуються на нулі.
:nth()селектор - не плутати:nth-child()
якщо у вас є контроль над запитом, який будує об’єкт jQuery, використовуйте :eq()
$("div:eq(2)")
Якщо ви не маєте контролю над цим (наприклад, він передається з іншої функції чи чогось іншого), тоді використовуйте .eq()
var $thirdElement = $jqObj.eq(2);
Або якщо ви хочете їхній розділ (скажімо, третій, четвертий та п’ятий елементи), використовуйте .slice()
var $third4th5thElements = $jqObj.slice(2, 5);
.eq()замість :eq()насправді. Невелике підвищення продуктивності.
.eq () - Ціле число, що вказує на елемент, заснований на 0.
Наприклад:
Розглянемо сторінку з простим списком на ній:
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
</ul>
Ми можемо застосувати цей метод до набору елементів списку:
$( "li" ).eq( 2 ).css( "background-color", "red" );
Якщо у вас вже є об'єкт jquery у змінній, ви також можете просто розглянути його як звичайний індексований масив без використання jquery:
var all_rows = $("tr");
for(var i=0; i < all_rows.length; i++){
var row = all_rows[i];
//additionally, you can use it again in a jquery selector
$(row).css("background-color","black");
}
Хоча вищенаведений приклад жодним чином не корисний, він представляє, як ви можете ставитися до об'єктів, створених jquery, як до індексованих масивів.
<select>елементів, і ви хочете, щоб вибраний елемент комбобоксу, використовуйте$(row).val();
Якщо я правильно розумію ваше запитання, ви завжди можете просто перетворити функцію get так:
var $someJqueryEl = $($('.myJqueryEls').get(3));
eq()дає вам безкоштовно.
Якщо ви хочете отримати певний елемент / вузол або тег у циклі, наприклад
<p class="weekday" data-today="monday">Monday</p>
<p class="weekday" data-today="tuesday">Tuesday</p>
<p class="weekday" data-today="wednesday">Wednesday</p>
<p class="weekday" data-today="thursday">Thursday</p>
Отже, зверху виконується цикл коду, і ми хочемо вибрати для цього певне поле, ми повинні використовувати вибір jQuery, який може вибрати лише елемент, що очікує зверху, і код буде
$('.weekdays:eq(n)');
напр
$('.weekdays:eq(0)');
а також іншим методом
$('.weekday').find('p').first('.weekdays').next()/last()/prev();
але перший метод є більш ефективним, коли HTML <tag>має унікальну назву класу.
ПРИМІТКА. Другий метод - це використання, коли їх ім'я класу в цільовому елементі чи вузлі немає.
детальніше читайте на https://api.jquery.com/eq/
Для ітерацій із використанням селектора, здається, немає сенсу:
var some = $( '...' );
for( i = some.length -1; i>=0; --i )
{
// Have to transform in a jquery object again:
//
var item = $( some[ i ] );
// use item at will
// ...
}
<html>
<head></head>
<body>
<script type="text/javascript"
src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('li:eq(1)').hide();
});
</script>
<ol>
<li>First</li>
<li>Second</li>
<li>Third</li>
</ol>
</body>
</html>
Під час його запуску в упорядкованому списку є два пункти, які показують: Перший та Третій. Другий був схований.
$(function(){
$(document).find('div').siblings().each(function(){
var obj = $(this);
obj.find('div').each(function(){
var obj1 = $(this);
if(!obj1.children().length > 0){
alert(obj1.html());
}
});
});
});
<div id="2">
<div>
<div>
<div>XYZ Pvt. Ltd.</div>
</div>
</div>
</div>
<div id="3">
<div>
<div>
<div>ABC Pvt Ltd.</div>
</div>
</div>
</div>
.eq()замість:eq()?