I'm wondering if this is the most elegant and efficient way of doing this?
I have multiple 'tag' lists, and through CSS, I want the tags to appear inline (display: inline) and be comma-separated. The challenge that I'm having is to append commas to all but the last list item in each 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>
To append commas on all the ul.tagList list items, but the last, I use:
 $('ul.tagList').children(':not(:last-child)').append(',');
and this produces:
Tag A, Tag B, Tag C
Tag D, Tag E, Tag F
Is this the best way of doing this?
Also why does :not(:last-child) work but not :not(:last) in this context?
Thanks very much for your help + explanations.
Prembo.
:last does not work in this context, because it will only match one element, namely the last.
last-child can match more elements, one for each parent.
Your code looks pretty fine, using .not() instead of querying with sizzle might improve performance slightly.
$('ul.tagList').children().not(':last-child').append(',');
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With