【问题标题】:Global variable and if statement comparison to this全局变量和 if 语句比较 this
【发布时间】:2012-07-23 08:55:45
【问题描述】:

我正在尝试通过一些 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;
}


});

【问题讨论】:

  • 可能只是格式问题的小修正:mouseup 需要用引号引起来。

标签: javascript variables if-statement this global


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    例如:

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

    【讨论】:

    • 所以我认为比较 $this 的实际文本更好,我将如何剥离 $this 的文本并将其保存到全局变量中?
    • 你可以这样做:首先你给你的
    • 一旦进行比较,我就是这样使用全局变量的,如果是真的那么 $(var1).addclass('classname');因此,当我需要向特定元素添加/删除类时,使用 var1 = $(this) 非常有用。如果我使用 .attr,我将如何以相同的方式使用全局变量。截至目前,当我看到全局变量 'var1' 显示为 [div#idname.classname] 。
    • 如果你使用attr('id')并且你将全局变量设置为元素的id,那么你可以调用$("#" + var1).addclass('classname');
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多