这一定是我忽略的东西,但是请看下面的页面和JavaScript并告诉我为什么,对于所有圣洁的东西,jQuery不会返回true?
HTML:http://alcatel.scottbuckingham.com/reporting/test.html
<p class="test">hello1</p>
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
这个不起作用的声明。
非常感谢任何帮助!
答案 0 :(得分:8)
试试这个 - 工作演示 - &gt; 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');
}
答案 1 :(得分:2)
您可以使用jQuery is方法。
描述:根据a检查当前匹配的元素集 选择器,元素或jQuery对象,如果至少有一个,则返回true 这些元素与给定的参数匹配。
if (t.is(s)) {
console.log('yes');
}
答案 2 :(得分:1)
您可以这样做,比较HTML节点。 如果你想比较HTML对象,这是正确的方法。
if (t[0] === s[0]) {
console.log('yes');
}
答案 3 :(得分:1)
您的脚本位于<head>
但<p class="test">hello1</p>
中的元素<body>
。
首先,您应该使用$(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');
}
});
答案 4 :(得分:1)
这可以帮到你:
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
所以(就像众人告诉你的那样)使用这个:
if (t[0] === s[0]) {
console.log('yes');
}
使用
也是一种好习惯$(document).ready(function(){
});
围绕你的代码。