在jQuery中,parents()和children()的行为与我对嵌套列表的期望不同。一个例子:
<ul>
<li>item 1
<ul>
<li>item a</li>
<li>item b
<ul>
<li>item i</li>
</ul>
</li>
<li>item c</li>
</ul>
</li>
<li>item 2</li>
</ul>
和javascript:
$( 'li' ).click(function(event) {
$( 'ul' ).not( $(this).parents() ).hide();
$( this ).children().show();
});
如果我点击“项目b”,则“项目i”隐藏。看来“item i”是“b项”的孩子,应该用$(this).children()。show()
显示我是否有语法问题,或者我是否误解了DOM中的孩子/父母?
有关工作示例,请参阅https://jsfiddle.net/8o71yfpf/。
答案 0 :(得分:4)
你应该使用event.stopPropagation();
当你点击内部li时,你也点击了父li。
更新https://jsfiddle.net/8o71yfpf/2/
它可能有助于理解DOM遍历http://www.richfinelli.com/understanding-dom-traversal-in-jquery/