1

我有一个 jQuery UI 对话框,我想在没有标题的情况下呈现。我有这个工作,这不是问题。

我很好奇的是为什么 jQuery:parent选择器不会选择对话内容div的父级,但parent()函数会选择。这是一个工作示例:

HTML:

<input id="example1" type="button" value="Use :parent selector">
<input id="example2" type="button" value="Use parent() function">

<!-- 
One of many dialogues on the page, but this one needs
the title removed.
-->

<div id="throbber" style="display:none">
    <p>Doing work...be patient....</p>
    <img src="http://i.stack.imgur.com/GUw9u.gif"/>
</div>

脚本:

$("#example1").bind("click", function() {
    $("#throbber").dialog("destroy"); // for jsfiddle example
    $("#throbber").dialog({
        resizable: false,
        modal: false,
        width: 150
    });

    $("#throbber:parent .ui-dialog-titlebar").hide();
});

$("#example2").bind("click", function() {
    $("#throbber").dialog("destroy"); // for jsfiddle example
    $("#throbber").dialog({
        resizable: false,
        modal: false,
        width: 150
     });

    $("#throbber").parent().find(".ui-dialog-titlebar").hide();
});

这是jsFiddle中的上述代码:

http://jsfiddle.net/kevink/kPMQf/

在 chrome 中,如果我在渲染对话框后设置断点,如果我这样做$("#throbber:parent"),如预期的那样,它会自行选择:

在此处输入图像描述

如果我尝试选择它:parent,它不会,它只是再次选择自己:

在此处输入图像描述

如果我使用$("#throbber").parent(),这次它会选择它的父级:

在此处输入图像描述

这里发生了什么,为什么:parentselect#throbber的父母还.parent()没有呢?

4

3 回答 3

3

来自:parent 选择器的 jQuery 文档

描述:选择作为另一个元素的父元素的所有元素,包括文本节点。

因此,当您执行$("#throbber:parent")jQuery 的操作时,会找到带有 id 的元素,该元素#throbber恰好是另一个元素的父元素(在本例中为pandimg标签)。

另一方面, .parent()选择当前选择器的父级,因此这样做$("#throbber").parent()会找到带有 id 的元素的父级#throbber

于 2012-07-27T16:36:26.700 回答
2

.parent()获取当前匹配元素集中每个元素的父元素,可选地由选择器过滤。

:parent选择作为另一个元素的父元素的所有元素,包括文本节点。


$("#throbber").parent().find(".ui-dialog-titlebar")#throbber up到 parent 然后下降.ui-dialog-titlebar。可以访问兄弟姐妹到#throbber.

$("#throbber:parent .ui-dialog-titlebar")正在检查那是#throbber 父母然后.ui-dialog-titlebar只能访问#throbber.

于 2012-07-27T16:35:27.623 回答
0

我不认为 :parent 可以以这种方式使用-它只是过滤您已经拥有的选择器以仅匹配作为其他元素的父对象的对象(请参阅:http ://api.jquery.com/parent-selector/ )。所以它匹配#throbber 元素,因为它正在寻找名为#throbber 的元素,它是父元素!

于 2012-07-27T16:36:14.177 回答