1

タイトルなしでレンダリングしたいjQueryUIダイアログボックスがあります。私はこれを機能させていますが、それは問題ではありません。

私が興味を持っているのは、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()、今回はその親を選択します。

ここに画像の説明を入力してください

ここで何が起こっているのですか、なぜの親をまだ:parent選択しないのですか?#throbber.parent()

4

3 に答える 3

3

:parentセレクターのjQueryドキュメントから:

説明:テキストノードを含む、別の要素の親であるすべての要素を選択します。

したがって、jQueryが行うことは、別の要素(この場合はandタグ)の親である$("#throbber:parent")idを持つ要素を見つけることです。#throbberpimg

一方、 .parent()は、現在のセレクターの親を選択するため、実行$("#throbber").parent()すると、idを持つ要素の親が見つかります#throbber

于 2012-07-27T16:36:26.700 に答える
2

.parent()一致した要素の現在のセット内の各要素の親を取得します。オプションで、セレクターによってフィルター処理されます。

:parentテキストノードを含む、別の要素の親であるすべての要素を選択します。


$("#throbber").parent().find(".ui-dialog-titlebar")#throbber から親に、次にに移動し.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 に答える