Как выполнить итерацию результата jquery selector
Я хочу выполнить итерацию результата селектора запросов.
Код HTML
<nav id="navigation">
<a href="#" tabindex="1" class="active_nav">nav1</a>
<a href="#" tabindex="2">nav2</a>
<a href="#"tabindex="3">nav3</a>
</nav>
когда я использую javascript
alert($("#navigation >a")[0]);
результатом является атрибут тега a
href
Я не знаю, почему.
Ответы
Ответ 1
Используйте $.each
$("#navigation > a").each(function() {
console.log(this.href)
});
$('#navigation > a')[0]
^ ^---- Selects the 1st dom object from the jQuery object
| that is nothing but the index of the element among
| the list of elements
|------- Gives you children of nav(3 anchor tags in this case) which is a
jQuery object that contains the list of matched elements
Ответ 2
Используйте first()
следующим образом:
var element = $("#navigation>a").first();
console.log(element);
Ссылка
Ответ 3
В jQuery, когда вы используете индекс типа [0]
, это означает, что вы получаете доступ к элементу DOM. Вот почему
$("#navigation >a")[0]
возвращает тег <a>
.
Чтобы выполнить итерацию результата селектора jQuery, используйте каждый
$("#navigation >a").each(function(index, elem){
});
Ответ 4
Вы можете использовать встроенный each()
jQuery для этой итерации следующим образом:
$("#navigation>a").each(function(index){
console.log("I am " + index + "th element.");
//and you can access this element by $(this)
});
Ответ 5
Если вы хотите перебрать все теги <a>
, вы можете использовать каждую функцию
$('#navigation >a').each(function() {
alert(this.href);
});
и если вы хотите получить только первый тег <a>
, используйте .eq()
alert($('#navigation >a').eq(0).attr('href');
Ответ 6
Попробуйте использовать
console.log($("#navigation >a"))
поэтому вы можете увидеть все результаты в консоли (cmd + alt + я в chrome)