同一元素的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'); }
或者===
if (t.get(0) === s.get(0)) { //<--Compare DOM elements instead of jquery object's console.log('again yes'); }
您可以使用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()
函数的示例。