全局变量和if语句与此比较

时间:2012-07-23 08:55:45

标签: javascript variables if-statement this global

我试图通过一些if语句运行,在if语句中更改全局变量“var1”,并在另一个mouseup事件中比较该值并根据var1的值继续。

当我逐步执行代码并且var1等于$ this时,if语句将被传递,就好像不是真的一样。比较的问题是,为什么即使是真的也会被忽略。

var var1 = null;
var var2 = null;


$('.button').on(mouseup, function(evt) {

if (var1 == null) {

    Do Something...
    var1 = $(this);
    return;
}

if (var1 == $(this) {

    Do Something...
    var1 = $(this);
    return;
}


});

2 个答案:

答案 0 :(得分:1)

每次调用$(this)都会创建一个新的jQuery对象。这就是他们不匹配的原因。

例如: $(document) === $(document) ---> false

答案 1 :(得分:0)

当你调用$(this)时,会调用jQuery来创建一个新的jquery对象。在内部,jQuery对象是对DOM对象的引用数组。尽管两个jQuery对象可能在内部包含相同的引用,但它们是不同的对象,因此不是==。

例如:

<button id="theId">test</button>

$("#theId").click(function(){alert($(this) == $(this))}); will always display false;