Это ключевое слово + элемент DOM в jQuery - PullRequest
3 голосов
/ 19 мая 2011

Я создаю скрипт, который будет добавлять , к каждому элементу списка неупорядоченного списка, за исключением последнего элемента списка - он должен заканчиваться ; . Это должно происходить для каждого неупорядоченного списка!

Это как ...

<ul>
  <li>a</li>
  <li>b</li>
  <li>c</li>
</ul>

<ul>
  <li>d</li>
  <li>e</li>
  <li>f</li>
</ul>

... чтобы:

<ul>
  <li>a,</li>
  <li>b,</li>
  <li>c;</li>
</ul>

<ul>
  <li>d,</li>
  <li>e,</li>
  <li>f;</li>
</ul>

В данный момент мой код выглядит следующим образом ...

$('ul').each(function(i) {
    var listsLength = $(this + 'li').length;
    $(this + 'li').each(function(j) {
        if (i == (listsLength - 1)) {
            $(this).append(';');
        } else {
            $(this).append(',');
        }
    });
}

Я думаю, что проблема в этом коде ...

$( this + 'li' )

Есть идеи, как получить такой же эффект?

Edit:

Исправлено. На самом деле также была синтаксическая ошибка, и я также использовал i , где j . Теперь все работает и вот результат .

Редактировать # 2:

Просто используйте код @lonesomeday ... он очень удобочитаемый и легкий!

Ответы [ 4 ]

6 голосов
/ 19 мая 2011

Вы не можете сделать this + 'li'.this, в этом контексте, является элементом DOM, а не строкой.Чтобы получить желаемый эффект, вам понадобится $(this).find('li').

Ваш цикл также не нужен.Вы можете сделать что-то намного лучше с :last-child:

$('ul li:last-child').append(';');
$('ul li:not(:last-child)').append(',');

Эти две строки будут иметь желаемый эффект.

3 голосов
/ 19 мая 2011

Вместо $( this + 'li' ) до $( 'li', this )

1 голос
/ 19 мая 2011

this + 'li' попытается преобразовать this в строку, а затем конкатать 'li' в нее.

Попробуйте вместо этого:

$('li', this)
0 голосов
/ 19 мая 2011

Вместо этого вы можете использовать

$(this).find ('>li').each(...)

(если проблема действительно здесь).

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