鉴于代码:
$(element, document).mousedown(function() {
$(this).attr('id'); // get id of the element
});
如何在不使用this
的情况下重写代码?
答案 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' ); } );
} );