JQuery проходит через набор UL и динамически устанавливает идентификаторы постепенно на каждом - PullRequest
0 голосов
/ 18 мая 2010

У меня есть неупорядоченный список, который содержит несколько элементов с именем «oListItems», в UL есть класс, но нет идентификатора.

Класс OuteroListItems содержит множество oListitems

 oList.AppendFormat("<ul class='OuteroListItems'>");
            oList.AppendFormat("<li>");
            oList.AppendFormat("<ul class='oListItems'>");
            oList.AppendFormat("<li>" + s.sName + "</li>");
            oList.AppendFormat("<li>" + s.eName + "</li>");
            oList.AppendFormat("<li>" + s.SDate + "</li>");
            oList.AppendFormat("<li>" + s.EDate + "</li>");
            oList.AppendFormat("</ul>");
            oList.AppendFormat("</li>");
            oList.AppendFormat("</ul>");

Я хочу, чтобы для каждого получаемого класса .oListItem динамически добавлялся к нему идентификатор.

 var o = $(".oListItem");

    $.each(o, function (){

      var f = $(this).attr("id", 'listItem' + i);

        i++;
    });

уверен на подходе, это то, что у меня есть до сих пор?

Ответы [ 2 ]

2 голосов
/ 18 мая 2010

Вы можете сделать это, используя .each() (вне коллекции элементов), обратите внимание, что ID не может начинаться с цифры:

$('.oListItems').each(function(i) {
  $(this).attr('id', 'listItem' + i);
});

Функция .each() получает 2 параметра , (index, element), вам просто нужен первый, в этом случае i - это индекс (на основе нуля) текущего .oListItem you ' включен.

0 голосов
/ 18 мая 2010

То, что у вас есть, выглядит нормально для меня, за исключением того, что вы хотите объявить и инициализировать i где-нибудь. Но это может быть проще. Вы можете использовать индекс jQuery, передаваемый в обратный вызов $.each, и просто назначить непосредственно свойству id данного элемента, а не создавать объект jQuery вокруг него, просто чтобы установить атрибут с помощью attr. E.g.:

$.each(o, function(index) {

    this.id = 'listItem' + index;

});

Но если вы хотите построить объект jQuery вокруг каждого элемента по другим причинам:

$.each(o, function(index) {

    $(this).attr("id", 'listItem' + index);

});

(Также нет необходимости объявлять и использовать эту переменную f, если вы ее не используете, поэтому я оставил ее вне приведенного выше.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...