jquery - 对 jQuery 对象和 JavaScript 变量的不同使用场景感到困惑

标签 jquery variables object jquery-selectors

我对这两个代码块之间的差异感到困惑:

$("#someButton").click(function() {
    var button = this;
    $(button).attr('disabled', 'disabled');
}

$("#someButton").click(function() {
    var button = $(this);
    $(button).attr('disabled', 'disabled');
}

请注意按钮变量存储内容的差异。将 $(this) 存储到按钮变量而不是仅存储 this 有何意义?最后,我仍然使用 $(button).jQueryMethod() 来操作它,而不是 button.jQueryMethod()

最佳答案

在您的示例中差异并不那么显着,因为您仅使用包装的 JQuery 对象一次。如果您需要多次使用 JQuery 对象,这个问题就变得更加重要。

$("#someButton").click(function() {
    var button = this;
    $(button).attr('disabled', 'disabled');
    $(button).someJQueryMethod();
    ...
    $(button).someOtherJQueryMethod();
}

在这种情况下,最好将对象包装一次并缓存结果。按照惯例,将结果缓存在以 $ 符号开头的变量中,以指示它包含包装的 JQuery 对象。

$("#someButton").click(function() {
    var $button = $(this);
    $button.attr('disabled', 'disabled');
    $button.someJQueryMethod();
    ...
    $button.someOtherJQueryMethod();
}

这样,对 $() 的调用只会被调用一次。如果引用位于循环内,这一点就变得特别重要。

关于jquery - 对 jQuery 对象和 JavaScript 变量的不同使用场景感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139372/

相关文章:

javascript - 使用 jquery 定位和显示隐藏元素

javascript - Angular 在元素范围内保存一个值

javascript - Slick Slider 同步多个 slider - 3

jquery 变量作为 div ID 或类

c# - 在 C# 中重命名变量的用户定义方法中放置的正确方法或关键字是什么?

ruby-on-rails - 如何设置 "dynamically"变量值?

c++ - 访问来自不同类的对象

javascript - 当标题属性显示工具提示时是否有一个事件?

java - 显示方法显示来自其他Java方法的结果

SQL vs NoSQL,用于添加多个过滤器后将呈现给用户的数据