JQuery - 选择除最后列表之外的所有列表(来自多个列表.)

Pre*_*mbo 4 xhtml jquery jquery-selectors

我想知道这是否是最优雅和最有效的方式吗?

我有多个'标签'列表,并且通过CSS,我希望标签显示为内联(显示:内联)并以逗号分隔.我遇到的挑战是将逗号添加到每个ul.tagList中除最后一个列表项之外的所有列表:

 <ul class="outerList">
    <li>
        <div class="innerContainer">
            <ul class="tagList">
                <li>Tag A</li>
                <li>Tag B</li>
                <li>Tag C</li>
            </ul>
        </div>
    </li>
    <li>
        <div class="innerContainer">
            <ul class="tagList">
                <li>Tag D</li>
                <li>Tag E</li>
                <li>Tag F</li>
            </ul>
        </div>
    </li>
 </ul>
Run Code Online (Sandbox Code Playgroud)

要在所有ul.tagList列表项上添加逗号,但是最后一个,我使用:

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

这会产生:

标签A,标签B,标签C.

标签D,标签E,标签F.

这是最好的方法吗?

另外,为什么:不是(:last-child)工作但不是:不是(:last)在这种情况下?

非常感谢您的帮助+解释.

Prembo.

jAn*_*ndy 8

:last在这种情况下不起作用,因为它只匹配一个元素,即最后一个元素.

last-child 可以匹配更多元素,每个父元素一个元素.

你的代码看起来很好,使用.not()而不是用sizzle查询可能会略微提高性能.

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