Как JQuery справляется с итерацией getElementsByClassName?

Сегодня я сокращал свои старые коды и увидел этот код:

$(".ceker").append("<a href='kit/");
$("#pdf").append("pdf");
$("#txt").append("txt");
$("#epub").append("epub");
$(".ceker").append("/7.");
$("#pdf").append("pdf");
$("#txt").append("txt");
$("#epub").append("epub");
$(".ceker").append("'><div class='menukitap'><div class='menuharry7 menuharresler'></div><h4>Ölüm Yadigarları İndir</h4></div></a>");

раньше выводил так:

<a href="kit/pdf/7.pdf"><div class="menukitap"><div class="menuharry7 menuharresler"></div><h4>Ölüm Yadigarları İndir</h4></div></a>

А я укоротил вот так:

function item()
{
    if( $('.ceker').attr('id') == 'pdf' )
    {
        return "pdf";
    }
    if( $('.ceker').attr('id') == 'txt' )
    {
        return "txt";
    }
    if( $('.ceker').attr('id') == 'epub' )
    {
        return "epub";
    }
}

$(".ceker").append("<a href='kit/" + item() + "/7." + item() + "'><div class='menukitap'><div class='menuharry7 menuharresler'></div><h4>Ölüm Yadigarları İndir</h4></div></a>");

Этот код тоже работает, но я не понимаю, почему. На мой взгляд, этот код не должен работать, потому что класс «ceker» уже имеет 3 разных идентификатора «pdf», «txt» и «epub».

Итак, вот мой вопрос: как JQuery обрабатывает getElementsByClassName Iteration (ответ 1 )? (Я не понимаю, как это работает if( $('.ceker').attr('id') == 'pdf' ))

И вот HTML, если вам нужно

<nav class="menu">
                    <span class="ara-menu-yer">Türkçe</span>
                    <a><li><section id="pdf" class="ceker"></section></li></a>
                    <a><li><section id="txt" class="ceker"></section></li></a>
                    <a><li><section id="epub" class="ceker"></section></li></a>
                    <span class="ara-menu-yer">English</span>
                    <a><li><section id="ingpdf" class="cekereng"></section></li></a>
                    <a><li><section id="ingdoc" class="cekereng"></section></li></a>
                </nav>

Прошу прощения за орфографические, грамматические или словарные ошибки, если они есть. И я думаю, что я не мог объяснить свою проблему, но я хотел бы, чтобы вы поняли.


person MindlessRanger    schedule 20.01.2015    source источник
comment
.append() будет работать со всеми элементами в наборе, в то время как получение атрибута с использованием .attr() вернет только атрибут первого совпавшего элемента. Если использовать .attr() в качестве установщика, .attr('anyattribute','anyvalue'), то он будет работать со всеми элементами в наборе.   -  person A. Wolff    schedule 20.01.2015


Ответы (1)


Из документов:

Получите значение атрибута для первого элемента в наборе совпадающих элементов.

person Quentin    schedule 20.01.2015