使用javascript“this”作为jquery选择器

时间:2012-09-06 09:48:40

标签: javascript jquery

在这段代码中,我们可以获得元素id的值为2种不同的方式,并且两种方式都返回resultat

$("#my_div").on("click", function () {
    alert( $(this).attr("id") );

    alert( this.id );
});

但我感兴趣,第二种方式,在这种情况下它是否合适?我问这个,因为在代码中我们使用jquery选择器和jquery选择器,写清楚javascript:这个是合理的,它会一直工作吗?或者可能更好地使用jquery $(this)作为jquery选择器?还是没有差异?

4 个答案:

答案 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,因为另一个解决方案需要在幕后进行更多调用(明显调用jQueryattr)。

如果你需要更多关于mite与浏览器不同的信息,你需要jQuery方式。