首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery对象相等

jQuery对象相等
EN

Stack Overflow用户
提问于 2010-07-05 10:22:43
回答 6查看 160.4K关注 0票数 156

如何确定两个jQuery对象是否相等?我希望能够在数组中搜索特定的jQuery对象。

代码语言:javascript
运行
复制
$.inArray(jqobj, my_array);//-1    
alert($("#deviceTypeRoot") == $("#deviceTypeRoot"));//False
alert($("#deviceTypeRoot") === $("#deviceTypeRoot"));//False
EN

回答 6

Stack Overflow用户

发布于 2010-07-05 10:27:10

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

代码语言:javascript
运行
复制
alert($("#deviceTypeRoot")[0] == $("#deviceTypeRoot")[0]); //True
alert($("#deviceTypeRoot")[0] === $("#deviceTypeRoot")[0]);//True

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

票数 17
EN

Stack Overflow用户

发布于 2013-02-28 00:08:08

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

我已经尝试了一些快速和肮脏的东西,比如:

代码语言:javascript
运行
复制
JSON.stringify(a) == JSON.stringify(b)

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

就我的两分钱。

票数 15
EN

Stack Overflow用户

发布于 2010-07-05 10:57:31

一般来说,比较$(foo)和$(foo)不是一个好主意,因为这在功能上等同于下面的比较:

代码语言:javascript
运行
复制
<html>
<head>
<script language='javascript'>
    function foo(bar) {
        return ({ "object": bar });
    }

    $ = foo;

    if ( $("a") == $("a") ) {
        alert ("JS engine screw-up");
    }
    else {
        alert ("Expected result");
    }

</script>

</head>
</html>

当然,你永远不会期望"JS引擎搞砸了“。我使用"$“只是为了弄清楚jQuery在做什么。

每当你调用$("#foo")时,你实际上是在做一个jQuery("#foo"),返回一个新的对象。因此,比较它们并期望相同的对象是不正确的。

但是,您可以做的可能是:

代码语言:javascript
运行
复制
<html>
<head>
<script language='javascript'>
    function foo(bar) {
        return ({ "object": bar });
    }

    $ = foo;

    if ( $("a").object == $("a").object ) {
        alert ("Yep! Now it works");
    }
    else {
        alert ("This should not happen");
    }

</script>

</head>
</html>

因此,实际上您可能应该在实际程序中比较jQuery对象的ID元素,例如

代码语言:javascript
运行
复制
... 
$(someIdSelector).attr("id") == $(someOtherIdSelector).attr("id")

更合适。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3176962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档