web-dev-qa-db-ja.com

jQueryオブジェクトをどのように比較しますか?

そこで、2つのjQueryオブジェクトを比較して、親要素がページの本文であるかどうかを確認する方法を見つけようとしています。

ここに私が持っているものがあります:

if ( $(this).parent() === $('body') ) ...

私はこれが間違っていることを知っていますが、誰かが私が何をしているのか理解しているなら、彼らは私にこれを行う正しい方法を教えてくれますか?

100
Kyle Hotchkiss

生のDOM要素を比較する必要があります。例:

if ($(this).parent().get(0) === $('body').get(0))

または

if ($(this).parent()[0] === $('body')[0])
157
CMS

何故なの:

if ($(this).parent().is("body")) {
  ...
}

59
cletus

ループは不要です。単一の最初のノードをテストする必要はありません。それらが同じ長さであり、同一のノードを共有することを保証すること以外、ほとんど何も必要ありません。これが小さなコードスニペットです。これを独自の用途のためにjqueryプラグインに変換することもできます。

jQuery(function($) {
  // Two separate jQuery references
  var divs = $("div");
  var divs2 = $("div");

  // They are equal
  if (divs.length == divs2.length && divs.length == divs.filter(divs2).length) {         

  // They are not
  } else {}
});
18
tbranyen

私はこれらの答えにつまずき、どちらが良いか疑問に思いました。それはすべてあなたのニーズに依存しますが、最も簡単に入力、読み取り、実行することが最善です。これが、私が決定を下すために作成したパフォーマンステストケースです。

http://jsperf.com/jquery-objects-comparison

2
Salketer