異なるセレクターが同じ一致する要素のセットを返すかどうかを比較する必要があります。
私はこの簡単な解決策、小さなプラグインにたどり着きました:
;(function ($) {
$.fn.isEqual = function ($selector) {
return this.add().get().join() === $selector.add().get().join()
}
})(jQuery);
//e.g of usages: if($('div').isEqual($('#mydiv1,#mydiv2'))
//if($(':checkbox').isEqual($('input[type=checkbox].myclass'))
//if($('div').parents().isEqual($('body div').parents()) etc ...
今、私が見つけた他のすべてのソリューションは、特権的なものと思われるこのような非常に精巧に見えるので、何かが欠けていると思います:
$.fn.sequenceEqual = function(compareTo) {
if (!compareTo || !compareTo.length || this.length !== compareTo.length) {
return false;
}
for (var i = 0, length = this.length; i < length; i++) {
if (this[i] !== compareTo[i])
return false;
}
}
return true;
}
では、$.isEqual プラグインを使用することの欠点は何でしょうか?