如何确定两个jQuery对象是否相等?我希望能够在数组中搜索特定的jQuery对象。
$.inArray(jqobj, my_array);//-1
alert($("#deviceTypeRoot") == $("#deviceTypeRoot"));//False
alert($("#deviceTypeRoot") === $("#deviceTypeRoot"));//False发布于 2010-07-05 10:27:10
如果您仍然不知道,您可以通过以下方式取回原始对象:
alert($("#deviceTypeRoot")[0] == $("#deviceTypeRoot")[0]); //True
alert($("#deviceTypeRoot")[0] === $("#deviceTypeRoot")[0]);//True因为$("#deviceTypeRoot")还返回选择器选择的对象数组。
发布于 2013-02-28 00:08:08
$.fn.equals(...)解决方案可能是最干净、最优雅的解决方案。
我已经尝试了一些快速和肮脏的东西,比如:
JSON.stringify(a) == JSON.stringify(b)它可能很昂贵,但令人舒服的是它是隐式递归的,而优雅的解决方案不是。
就我的两分钱。
发布于 2010-07-05 10:57:31
一般来说,比较$(foo)和$(foo)不是一个好主意,因为这在功能上等同于下面的比较:
<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"),返回一个新的对象。因此,比较它们并期望相同的对象是不正确的。
但是,您可以做的可能是:
<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元素,例如
...
$(someIdSelector).attr("id") == $(someOtherIdSelector).attr("id")更合适。
https://stackoverflow.com/questions/3176962
复制相似问题