Как выполнить итерацию результата 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)