jQueryオブジェクトの等価性 質問する

jQueryオブジェクトの等価性 質問する

2 つの jQuery オブジェクトが等しいかどうかをどのように判断すればよいでしょうか? 特定の jQuery オブジェクトの配列を検索できるようにしたいと思います。

$.inArray(jqobj, my_array);//-1    
alert($("#deviceTypeRoot") == $("#deviceTypeRoot"));//False
alert($("#deviceTypeRoot") === $("#deviceTypeRoot"));//False

ベストアンサー1

jQuery 1.6以降では、.is以下は1年以上前の回答です...

var a = $('#foo');
var b = a;


if (a.is(b)) {
    // the same object!
}

2 つの変数が実際に同じオブジェクトであるかどうかを確認したい場合は、次のようにします。

var a = $('#foo');
var b = a;

...その後、一意の ID を確認できます。新しい jQuery オブジェクトを作成するたびに、ID が取得されます。

if ($.data(a) == $.data(b)) {
    // the same object!
}

ただし、同じことは単純な でも実現できますがa === b、上記では少なくとも次の開発者に何をテストしているのかを正確に示すことができるかもしれません。

いずれにせよ、それはおそらくあなたが求めているものではないでしょう。2 つの異なる jQuery オブジェクトに同じ要素セットが含まれているかどうかを確認したい場合は、次のようにします。

$.fn.equals = function(compareTo) {
  if (!compareTo || this.length != compareTo.length) {
    return false;
  }
  for (var i = 0; i < this.length; ++i) {
    if (this[i] !== compareTo[i]) {
      return false;
    }
  }
  return true;
};

ソース

var a = $('p');
var b = $('p');
if (a.equals(b)) {
    // same set
}

おすすめ記事