选择对象
问题描述:
的孩子我有这个reqular ul>李结构选择对象
<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(...)
这会将事件分配给所有不仅孩子。
我可以这样做,但我不喜欢它
obj.children("li").each(function() {
$(this).live(...);
});
有没有一种方法来选择对象的所有儿童,直接涂抹live
不使用.each()
?
答
感谢@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() {...});
...你想做什么? '$(“ul.compare> li”)。live(...);'?另请注意,从jQuery 1.7开始,'live()'已被折旧,以支持['on()'](http://api.jquery.com/on)。 – Matt 2012-04-05 08:50:54
感谢live()警告。我试图写我的第一个插件,我只有这个'return this.each(function(){var o = options; var obj = $(this); ...});'so so can a id或者这个插件应用时的类名。之前有'.selector',但现在它消失了。 – Ergec 2012-04-05 09:01:26
我很难确定您想要新解决方案。你想在'ul.compare'或其他东西中的任何'li'上触发一个事件吗? 'obj'选择器是否被传入? – 2012-04-05 09:19:09