3

選択範囲で呼び出されたときに、jQueryプラグインの動作を変えたい$(window)。セットに含まれているかどうかを確認するにはどうすればよいwindowですか?これまでの私の試み:

>>> $(window) == $(window)
false
>>> $(window).is(window)
false
>>> $(window).filter(window).length
0

(ちなみに、これらはすべて正常に機能しdocumentます。)もちろん、私はいつでも検査できますが、このようなアプローチでは対応できないthis[0]エッジケースもあります。$('a').add(window)

関数を介してフィルタリングすることもできます:

>>> $(window).filter(function() { return this === window; }).length
1

しかし、私はもう少し「jQueryっぽい」または一般的なアプローチを望んでいました。

4

3 に答える 3

2

index()を使用して、オブジェクトに渡すことができwindowます。-1オブジェクトがセットの一部でない場合は返さwindowれ、そうでない場合はセット内のゼロベースのインデックスが返されます。

>>> $(window).index(window) >= 0
true

>>> $("a").add(window).index(window) >= 0
true

>>> $("a").index(window) >= 0
false
于 2012-06-13T14:39:19.947 に答える
1

.is($(window))作品:

         $(window).is($(window))​    //true
$('a').add(window).is($(window))   //true
于 2012-06-13T14:44:40.197 に答える
1

AFAIK、$(window).parent()&のみが$(document).parent()空の配列を返します。多分あなたは次のようなものを使うことができます

var test = window
  //undefined
$(test).parent().length == 0 && !$(test).is(document)
  //true
test = document
  //#document
$(test).parent().length == 0 && !$(test).is(document)
  //false
于 2012-06-13T14:41:45.830 に答える