2

イベントをウィジェットの親にアタッチする jQuery ウィジェットに取り組んでいますが、親があるかどうかわかりません。

例えば;

var x = $('<div>');
x.mywidget();

........... in mywidget
_create : function () {
    var y = this.element.parent() === undefined ? this.element : this.element.parent();
    y.bind(....);
}

bind ステートメントを実行する前に、ウィジェットが DOM に追加されているかどうかを確認する必要があります。DOM に追加されていない場合は、代わりにバインドthis.element.bind(....)します。

問題は$('<div>').parent()、jQuery オブジェクトを返すことです! 私はそれが戻ってくることを期待していましたundefined

だから、親を持つべきではないときに、どの親を返すことができるのだろうか?

4

6 に答える 6

3

myDiv.parent().lengthjQuery セットが空かどうかを知るために使用できます。

ただし、オブジェクトが DOM から直接削除されたのではなく、親が削除された場合、これは誤検知を引き起こします。

信頼できる検出が必要な場合は、 を使用する必要がありますjQuery.contains(document.documentElement, myDiv)

于 2013-03-27T16:45:07.547 に答える
3

常にオブジェクトを返します。オブジェクト内に何かがあるかどうかを確認したい場合は、 をチェックできます.length == 0ので$("<div>").parent().length == 0、チェックしてください。

于 2013-03-27T16:45:23.110 に答える
2

jQuery は常にオブジェクトを返すため、jQuery オブジェクトの長さを確認します。

于 2013-03-27T16:48:20.330 に答える
2

すべての jQuery DOM 検索および操作メソッドは、0 個以上の要素を持つ jQuery コレクションを返します。 $("<div>").parent()要素のないコレクション (空のコレクション) を返します。その上で任意の jQuery メソッドを呼び出すことはできますが、DOM 要素に結び付けられていなければ、できることは非常に限られています。ゼロに.lengthなり、 で繰り返してもコールバックに到達しません.each

于 2013-03-27T16:47:20.360 に答える
2

返された jQuery オブジェクトの長さを確認してください。div に親がない場合、返される jQuery オブジェクトは.parentゼロ要素をラップします。

于 2013-03-27T16:45:03.187 に答える
0

それは常に親になります。たとえば、ボディにすることができます

たとえば、jqueryデータを使用してinitマーカーを設定します

var wasInit = ( $(this).data("mypluginwasinit") !== undefined );
if(wasInit) return;
$(this).data("mypluginwasinit","yes");
于 2013-03-27T16:49:07.663 に答える