0

我有以下代码:

$('#detailData')
    .on('change', '.updatable', function () {
        var type = $(this).attr('id').split('_')[1];
        updateField(entity, $(this), type);
        return false;
    })

我想添加到代码中并$(this)多次使用。为了清楚起见,我想分配this给一个变量。当我使用 jQuery 时,我看到人们$在变量名之前放置了一个。我是否正确地说以下是正确的?

var $abc = $('#abc');

$(this)如果这是正确的,那么如果我理解正确指向 DOM 变量,我应该如何命名。DOM 变量和返回的内容之间有什么区别$('#abc')吗?

4

4 回答 4

7

使用$thisto store$(this)只是一种代码约定,用于提醒程序员所讨论的变量已经是一个 jQuery 对象,而不是一个纯 DOM 元素。

它有助于避免常见的写作错误:

var foo = $(...);
$(foo).doSomething();

该错误是无害的,但会导致代码效率稍低。

相反, using$foo也提醒程序员他们不能直接在该变量上调用本机 DOM 函数,而应该使用$foo[n]or$foo.get(n)来访问封闭的 DOM 元素。

另外,不要忘记,由于this 只是一个纯 DOM 元素,因此您可以(并且应该)在适当的时候使用本机 DOM 函数或属性:

var type = this.id.split('_')[1];
于 2012-09-25T11:21:24.863 回答
1

$this很常见,但这完全取决于您。一致性是最重要的。

于 2012-09-25T11:21:40.537 回答
0
 //jQuery to jQuery object
 $myvar = $(this);

 //jQuery to JavaScript HTML object
 var myVar = $(this)[0];
于 2012-09-25T11:23:05.237 回答
0

指某东西的用途:

var $this = $(this);

通常是当函数在 this 的上下文中对对象调用多个单独的调用时。这个想法是,必须一次获取这个 dom 对象是一种性能成本,因为 Jquery 将重新扫描 dom 以获取所需的对象。通过将对象分配给本地范围,在 $(this) 上重用 $this 的成本会降低。

碰巧使用 $this 作为局部变量名是大多数开发人员常用的命名方案。

$('#detailData').on('change', '.updatable', function (){
    var $this = $(this),
        type = $this.attr('id').split('_')[1];
    updateField(entity, $this, type);
    return false;
});
于 2012-09-25T11:27:39.127 回答