为了账号安全,请及时绑定邮箱和手机立即绑定

jQuery对象相等

jQuery对象相等

白衣非少年 2019-07-10 16:39:10
jQuery对象相等如何确定两个jQuery对象是否相等?我希望能够为特定的jQuery对象搜索数组。$.inArray(jqobj, my_array);//-1     alert($("#deviceTypeRoot") == $("#deviceTypeRoot"));//False alert($("#deviceTypeRoot") === $("#deviceTypeRoot"));//False
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

从jQuery 1.6开始,您可以使用.is..下面是一年多前的答案.。

var a = $('#foo');var b = a;if (a.is(b)) {
    // the same object!}

如果您想知道两个变量是否实际上是同一个对象,例如:

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

.然后你可以检查他们唯一的身份证每次创建新的jQuery对象时,都会得到一个id。

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

尽管如此,也可以通过一个简单的a === b,上面的内容至少可以告诉下一个开发人员您要测试的是什么。

无论如何,这可能不是你想要的。如果要检查两个不同的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}


查看完整回答
反对 回复 2019-07-10
?
catspeake

TA贡献1111条经验 获得超0个赞

如果您仍然不知道,可以通过以下方法返回原始对象:

alert($("#deviceTypeRoot")[0] == $("#deviceTypeRoot")[0]); //Truealert($("#deviceTypeRoot")[0] === $("#deviceTypeRoot")[0]);//True

因为$("#deviceTypeRoot")还返回选择器选择的对象数组。


查看完整回答
反对 回复 2019-07-10
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

这个$.fn.equals(...)解决方案可能是最干净和最优雅的。

我试过像这样快速而肮脏的东西:

JSON.stringify(a) == JSON.stringify(b)

它可能很昂贵,但舒服的是它是隐式递归的,而优雅的解决方案则不是。

只是我的两分钱。


查看完整回答
反对 回复 2019-07-10
  • 3 回答
  • 0 关注
  • 517 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信