嵌套列表中的jQuery父/子

时间:2015-05-27 16:48:27

标签: javascript jquery dom

在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/

1 个答案:

答案 0 :(得分:4)

你应该使用event.stopPropagation();

当你点击内部li时,你也点击了父li。

更新https://jsfiddle.net/8o71yfpf/2/

它可能有助于理解DOM遍历http://www.richfinelli.com/understanding-dom-traversal-in-jquery/