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



我正试图运行一些if语句,更改if语句中的全局变量"var1",并在另一个mouseup事件中比较值,然后根据var1的值继续操作。

当我遍历代码并且var1等于$this时,if语句被当作非true传递。这种比较可能有什么问题,为什么即使是真的,它也被忽视了。

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;
}

});

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

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

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

例如:

<button id="theId">test</button>
$("#theId").click(function(){alert($(this) == $(this))}); will always display false;

最新更新