jQuery中的关键字+ DOM元素

daG*_*vis 3 jquery jquery-selectors

我正在创建将添加的脚本,在每个无序列表的列表元素中添加最后一个列表元素的例外 - 它应该以; .这应该发生在每个无序列表中!

就像是...

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

<ul>
  <li>d</li>
  <li>e</li>
  <li>f</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

...至:

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

<ul>
  <li>d,</li>
  <li>e,</li>
  <li>f;</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我的代码目前看起来像这样......

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

我认为这个问题就是这个代码......

$( this + 'li' )
Run Code Online (Sandbox Code Playgroud)

知道如何获得相同的效果吗?

编辑:

固定它.有实际语法错误,以及和我也用在那里Ĵ应放置.现在一切正常,这就是结果.

编辑#2:

只需使用@lonesomeday代码......它的可读性和轻量级!

lon*_*day 6

你做不到this + 'li'. this在这种情况下,是一个DOM元素,而不是一个字符串.为了获得你想要的效果,你需要$(this).find('li').

你的循环也是不必要的.你可以做得更好:last-child:

$('ul li:last-child').append(';');
$('ul li:not(:last-child)').append(',');
Run Code Online (Sandbox Code Playgroud)

这两行会产生你想要的效果.