是什么导致jQuery对象不同?

时间:2017-04-11 18:19:43

标签: javascript jquery dom

为什么不首次尝试关闭对话框?或者更好的问题是为什么jQuery对象$("#dialog")$(this).parent('div.dialog')不同?

$('#click').click(function() {
    $("#dialog").dialog("open");
});

$("#dialog").dialog({autoOpen:false}).find('li').click(function(){
    $(this).parent('div.dialog').dialog('close');
    $("#dialog").dialog("close");
});

    <div id="dialog">
        <ul>
            <li>111</li>
            <li>222</li>
            <li>333</li>
        </ul>
    </div>  

1 个答案:

答案 0 :(得分:1)

$(this).parent('div.dialog')只会查找一个级别,以查看父级是否与该选择器匹配。它不会进一步遍历。结果是空集,因此使用.dialog()无效。

这里的工作原理是closest jQuery API

$(this).closest('div.dialog')

这与示例中的$("#dialog")相同。