1

在此代码中,我们可以通过 2 种不同的方式获取元素 id 的值,并以两种方式返回结果

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

    alert( this.id );
});

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

4

4 回答 4

6

this.id将为您提供内部 DOM 元素属性,同时$(this).attr("id")返回“id”属性的值。

jQuery 中的替代方法this.id是使用prop()method: $(this).prop("id")。但是,使用纯this.id构造会更容易和更快。

于 2012-09-06T09:51:00.190 回答
3

主 jQuery 构造函数可以接受许多不同类型的参数。

在这种情况下,this不是选择器,而是HTMLElementNode(jQuery 将其称为element)。

这完全没问题并且有文档记录

如果您只是要获取其 ID,则无需花费资源将元素包装在 jQuery 对象中。浏览器之间没有任何兼容性问题。

获取 HTMLElementNode的id属性需要更少的代码,并且比将整个内容包装在 jQuery 中更快。

于 2012-09-06T09:51:45.600 回答
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.idor$(this).prop('id')会给你同样的结果。

于 2012-09-06T09:51:25.153 回答
1

对于选择最好的方法并不总是很清楚。

在这种情况下,您需要this.id, 因为其他解决方案需要更多的幕后调用(显然调用jQueryand attr)。

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

于 2012-09-06T09:54:41.797 回答