“这个”在这里代表什么?

时间:2011-08-24 07:47:30

标签: javascript jquery

鉴于代码:

$(element, document).mousedown(function() {
        $(this).attr('id'); // get id of the element

});

如何在不使用this的情况下重写代码?

7 个答案:

答案 0 :(得分:3)

  这是什么意思?

在此上下文中,this指向您当前正在为其定义mousedown属性的元素。

我看不出有什么理由不在这里使用它。你能详细说明你想做什么吗?

答案 1 :(得分:1)

没有this关键字的版本:

var $element = $('#element');
$element.mousedown(function() {
    var id = $element.attr('id');
        // id is now 'element'
});

答案 2 :(得分:1)

您可以使用以下内容:

$(element, document).mousedown(function(e) {
        $(e.target).attr('id'); // Get id of the element.
});

答案 3 :(得分:0)

在这种情况下,“this”指的是被点击的元素。这不是必需的,但你必须为每个元素都有这样的代码:

$("#button").mousedown(function(){
 $("#button").attr("id");
})

将其留在

中要容易得多

答案 4 :(得分:0)

这在JavaScript中代表函数的执行上下文。在这种情况下,您将受益于jQuery设置this到您绑定的元素。但是对于自编函数,你通常最终会引用全局对象。

如果您输入新的功能范围,通常需要保留它,因为新功能有一个新功能。

例如

$('div').each(function(index, item) {
    var that = this;
    $(this).mousedown(function() {
        //this could be something different than before 
        //so we use the that reference
        $(that).hide();
    }
});

答案 5 :(得分:0)

“this”指的是函数的范围。关于功能,这是被采取行动的元素。对于您的代码,操作是mousedown,因此被执行的元素就是这个。希望这有帮助。

答案 6 :(得分:0)

问题是你不会比使用this更有效率。其他所有内容都会或多或少地要求进行第二次元素查找,虽然不是昂贵但比使用范围内的对象(this)更昂贵。

严格来说,这是最直接的解释:

$(element, document).mousedown(function() {
        $(element, document).attr('id'); 
});

现在,这可能没问题,但如果您的元素实际上是一个返回多个值的选择器(如类选择器),那么您将遇到问题。因此,您可能需要考虑:

$(element, document).each( function( ind, elem ) {
    elem.mousedown( function(){ elem.attr( 'id' ); } );
} );