同一元素的jQuery对象不相等?

这一定是我忽略的东西,但是请看下面的页面和JavaScript并告诉我为什么,对于所有圣洁的东西,jQuery不会返回true?

HTML: http : //alcatel.scottbuckingham.com/reporting/test.html

hello1

JS: http : //alcatel.scottbuckingham.com/reporting/_scripts/collapse.js

 ;(function($, window, document, undefined) { var t = $('.test'); var s = $('.test'); console.log(t); console.log(s); if (t === s) { console.log('yes'); } })(jQuery, window, document); 

我真的花了几个小时试图解决这个问题,并将其减少到几乎1 === 1声明,这是行不通的。

任何帮助都非常感谢!

试试这个 – 工作演示 – > http://jsfiddle.net/mohammadAdil/tHjgN/

  if(t.is(s)) { console.log('yes'); } 

http://api.jquery.com/is/

或者===

 if (t.get(0) === s.get(0)) { //<--Compare DOM elements instead of jquery object's console.log('again yes'); } 

演示 - > http://jsfiddle.net/mohammadAdil/tHjgN/1/

您可以使用jQuery is方法。

描述:根据选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定的参数匹配,则返回true。

 if (t.is(s)) { console.log('yes'); } 

示例小提琴: http : //jsfiddle.net/IrvinDominin/q86Sh/

您可以这样做,比较HTML节点。 如果要比较HTML对象,这是正确的方法。

 if (t[0] === s[0]) { console.log('yes'); } 

这可以帮助你:

 var test = document.getElementById('test') //returns a HTML DOM Object var test = $('#test') //returns a jQuery Object var test = $('#test')[0] //returns a HTML DOM Object 

所以(就像limelights告诉你的那样)使用这个:

 if (t[0] === s[0]) { console.log('yes'); } 

使用也是一种好习惯

 $(document).ready(function(){ }); 

围绕你的代码。

您的脚本位于的元素

hello1

首先,您应该使用$(document).ready()来确保加载内容。 然后使用.is()检查它们是否相等。

 $(document).ready(function() { var t = $('.test'); var s = $('.test'); console.log(t); console.log(s); if (t.is(s)) { console.log('yes'); } }); 

比较使用和不使用.ready()函数的示例。