0

我有这个规则的 ul > li 结构

<ul class='compare'>
    <li>Level 1
        <ul>
            <li>Level 2</li>
            <li>Level 2</li>
            <li>Level 2</li>
            <li>Level 2</li>
        </ul>
    </li>
    <li>Level 1
        <ul>
            <li>Level 2</li>
            <li>Level 2</li>
            <li>Level 2</li>
            <li>Level 2</li>
        </ul>
    </li>
    <li>Level 1
        <ul>
            <li>Level 2</li>
            <li>Level 2</li>
            <li>Level 2</li>
            <li>Level 2</li>
        </ul>
    </li>
</ul>

$("ul.compare > li").live(...);用来将鼠标事件分配给 ul 的孩子

但现在我需要得到一个对象的孩子。假设obj是我的$("ul.compare")

如果我喜欢这样,$("li", obj).live(...)这会将事件分配给所有 li 而不仅仅是孩子。

我可以这样做,但我不喜欢

obj.children("li").each(function () {
    $(this).live(...);
});

有没有办法选择对象的所有子对象并live直接应用而不使用.each()

4

1 回答 1

0

谢谢@Matt,您似乎无意中用您的评论回答了我的问题。解决方案是.on()

虽然这不起作用,但我们必须使用.each()分配mouseover给每个匹配的元素

//obj.children("li").children("ul").children("li").live("mouseover", function () {...}); //Does not work
obj.children("li").children("ul").children("li").each(function () {
    $(this).live("mouseover", function () {...});
});

这行得通,没有必要.each()

obj.children("li").children("ul").children("li").on("mouseover", function () {...});
于 2012-04-05T09:50:27.517 回答