考虑这个简单的html列表:
<ul>
<li><a href="http://google.com/">Test</a></li>
<li><a href="http://google.com/">Test2</a>
<ul>
<li><a href="http://google.com">Test2 - 1</a></li>
<li><a href="#3">Test2 - 2</a></li>
</ul>
</li>
</ul>
现在这 3条jQuery 行使其可折叠:
$('ul > li').on('click', function(e) {
e.preventDefault();
$(this).find('ul').slideToggle();
});
这里的问题是,如果一个链接被点击得更深,ul
我希望它跟随链接,在 jQuery 中将是:
if(this.nodeName != 'A') {
e.preventDefault();
}
目前nodeName
是LI
并且不是最后点击的子元素。
问题:是否可以在没有第二个事件处理程序的情况下执行此操作以处理更深的元素?(即$('ul > li ul li a').click()
:)
我尝试e.stopPropagation
了很多其他css selectors
(ul > *
等ul li
)但没有成功。