9

这一定是我忽略了的东西,但是请查看以下页面和 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不起作用的声明。

非常感谢任何帮助!

4

5 回答 5

8

试试这个 - 工作演示 - > 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/

于 2013-05-03T12:20:57.017 回答
2

您可以使用 jQuery is方法。

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

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

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

于 2013-05-03T12:26:12.300 回答
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');
        }
});

比较有没有.ready()函数的例子。

于 2013-05-03T12:28:20.570 回答
1

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

if (t[0] === s[0]) {
    console.log('yes');
}
于 2013-05-03T12:23:27.983 回答
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(){


});

围绕你的代码。

于 2013-05-03T12:31:50.933 回答