在这段代码中,我们可以获得元素id的值为2种不同的方式,并且两种方式都返回resultat
$("#my_div").on("click", function () {
alert( $(this).attr("id") );
alert( this.id );
});
但我感兴趣,第二种方式,在这种情况下它是否合适?我问这个,因为在代码中我们使用jquery选择器和jquery选择器,写清楚javascript:这个是合理的,它会一直工作吗?或者可能更好地使用jquery $(this)作为jquery选择器?还是没有差异?
答案 0 :(得分:6)
this.id
将为您提供内部DOM元素属性,而$(this).attr("id")
则返回'id'属性的值。
jQuery中this.id
的替代方法是使用prop()
方法:$(this).prop("id")
。但是,使用纯this.id
构造将更容易,更快。
答案 1 :(得分:3)
主jQuery构造函数可以使用许多不同类型的参数。
在该上下文中,this
不是选择器,它是 HTMLElementNode (jQuery调用元素)。
这完全没问题documented。
如果您要获取其ID,则无需花费资源来包装jQuery对象中的元素。浏览器之间没有任何兼容性问题。
抓取HTMLElementNode的id
属性需要更少的代码,然后将整个内容包装在jQuery中更快。
答案 2 :(得分:1)
是的,你的第二种方式是正确的。
$("#my_div").on("click", function () {
// this is available within this function
alert( this.id );
});
this
引用函数中的HTMLDOMElement
,将this
包裹在$()
中将为您提供jQuery对象。
如果在click
处理程序中定义另一个函数。例如:
$("#my_div").on("click", function () {
// keep reference of this
var that = this;
function test() {
// this will not available here directly
// instead of that you can use reference
alert(that.id);
}
});
$(this).attr('id')
,this.id
或$(this).prop('id')
会给您相同的结果。
答案 3 :(得分:1)
选择最佳方法并不总是很清楚。
在这种情况下,您需要this.id
,因为另一个解决方案需要在幕后进行更多调用(明显调用jQuery
和attr
)。
如果你需要更多关于mite与浏览器不同的信息,你需要jQuery方式。