jQuery选择器不合逻辑

Str*_*_99 3 jquery jquery-selectors

我在选择li无序列表中的特定元素时遇到问题.虽然这不是一个主要问题,我可以找到一种解决方法,但我真的很想知道为什么它不起作用.

我的HTML:

<div id="myList">
    <ul>
        <li>something 1</li>
        <li>something 2</li>
        <li>something 3</li>
        <li>something 4
            <ul>
                <li>sub something 1</li>
                <li>sub something 2</li>
                <li>sub something 3</li>
            </ul>
        </li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

我的问题是:

$('#myList ul:first li:first').addClass('cool')
Run Code Online (Sandbox Code Playgroud)

这会将类添加到"something 1"li标签中.一切都很好.但:

$('#myList ul:first li:last').addClass('cool')
Run Code Online (Sandbox Code Playgroud)

不是将类添加到"4"li标签,而是将其添加到"sub something 3"li标签中.

为什么?

bar*_*iir 6

您正在树下选择所有li-Tags.

你可能想试试这个:

$('#myList ul:first>li:last').addClass('cool')
Run Code Online (Sandbox Code Playgroud)

这样,您只能选择前一个节点的直接子节点.