在jquery中使用.find()找不到特定标记

时间:2016-08-18 07:40:22

标签: jquery

我对这个问题感到困惑,我想知道'li'是否有孩子'ul'。我控制(使用附加到'span'元素的onclick事件)'li'的所有子项(使用.children()方法)和'ul'列出但是当我使用.find()方法时它返回0长度。

这是我的代码:

HTML:

<div>
    <ul>
        <li><input type="checkbox"/><span>LIST ONE</span></li>
        <li>
            <input type="checkbox"/> <span>LIST TWO</span>
            <ul>
                <li><input type="checkbox"/> <span onclick="myFunc(this)">SUB LIST ONE</span></li>
                <li><input type="checkbox"/> <span>SUB LIST TWO</span></li>
            </ul>
        </li>
    </ul>
</div>

JS:

function myFunc(el){
     var x = $(el).parent(); //the li
     var xx = $(x).parent().parent(); //the parent the ul 
     console.log($(xx).children()); //ul will be listed here
     console.log($(xx).children().find('ul')); //this return 0 length which I believe ul is not found
}

这里到底发生了什么?谢谢您的帮助! (jquery newbee)

2 个答案:

答案 0 :(得分:0)

您可以使用$('xx').find('ul')查找ul或$('xx').closest('ul')

答案 1 :(得分:0)

您在代码中过于讨厌,此解决方案不具备可扩展性,但在此示例中有效,例如,如何选择ul

function myFunc(el){
    // Grabs the <span> tag
    var x = $(el).parent().parent();
    // Creates a jQuery object out of the list item above.
    console.log(x)
}