Javascript 什么是;这";站在这里?
鉴于代码:Javascript 什么是;这";站在这里?,javascript,jquery,Javascript,Jquery,鉴于代码: $(element, document).mousedown(function() { $(this).attr('id'); // get id of the element }); 如何在不使用this的情况下重写代码?没有this关键字的版本: var $element = $('#element'); $element.mousedown(function() { var id = $element.attr('id'); // i
$(element, document).mousedown(function() {
$(this).attr('id'); // get id of the element
});
如何在不使用
this
的情况下重写代码?没有this
关键字的版本:
var $element = $('#element');
$element.mousedown(function() {
var id = $element.attr('id');
// id is now 'element'
});
这代表什么
在此上下文中,此
指向当前为其定义mousedown
属性的元素
我看不出有什么理由不在这里使用它。你能详细说明一下你想做什么吗?在本例中,“this”指的是被单击的元素。这不是必需的,但每个元素都必须有这样的代码:
$("#button").mousedown(function(){
$("#button").attr("id");
})
将其保留在中要容易得多,这在JavaScript中表示函数的执行上下文。在这种情况下,jQuery将
this
设置为绑定内容的元素将使您受益匪浅。但是对于自写函数,通常最终会引用全局对象
如果您输入了一个新的函数作用域,您通常必须保留它,因为一个新函数有一个新的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();
}
});
“这”指的是功能的范围。就功能而言,这是所作用的元素。在您的代码中,操作是mousedown,因此被操作的元素是this。希望这有帮助 问题是,你不会得到比使用
这个
更有效的东西。其他所有内容或多或少都需要第二个元素查找,虽然这并不十分昂贵,但比在范围内使用对象的成本更高(this
)
严格地说,这是最字面的解释:
$(element, document).mousedown(function() {
$(element, document).attr('id');
});
现在,这可能没问题,但如果您的元素实际上是一个返回多个值的选择器(如类选择器),那么您将遇到问题。因此,您可能需要考虑:
$(element, document).each( function( ind, elem ) {
elem.mousedown( function(){ elem.attr( 'id' ); } );
} );
您可以使用以下选项:
$(element, document).mousedown(function(e) {
$(e.target).attr('id'); // Get id of the element.
});
为什么?有什么问题吗?如果问题中的
$(元素,文档)
更改为$(选择器,上下文)
,那么这是非常相关的。你问的是一个实际错误的特殊情况:)如果#元素选择器匹配多个元素怎么办它是一个id它怎么能匹配多个id!!:/@是的,但是如果它不是一个ID而是一个类,它可以匹配多个元素。我知道#ID应该是唯一的。。但与web开发中的大多数事情一样,您不能保证这一点。此外,我们正在寻找一种通用的方法来替换它,因此应该使用一个类选择器或任何返回多个元素的东西considered@Tigraine:#element始终只选择一个元素,而不管您缺少的HTML是否不正确。“。