在以下示例中是否有任何理由使用ID与“this”:
$("#firstname").click(function() {
$("#firstname").val("changed");
});
VS
$("#firstname").click(function() {
$(this).val("changed");
});
结果两种方式相同。
答案 0 :(得分:5)
这个想法是,如果您更改上面的firstname
,您将不必在第二个块中再次更改它。例如:
$("#my-new-name").click(function() {
// "this" remains the same.
$(this).val("changed");
});
此外,性能方面,jQuery
不需要解析字符串并运行其选择器引擎,而this
是一个原始的DOMElement,它可以快速检测到它的类型并获得它的方式。
答案 1 :(得分:3)
使用this
而不是id
的一个原因是效果。
当您输入点击处理程序时,this
已存在且已设置。
因此,我认为使用this
创建一个jQuery对象要快得多,而不是调用 sizzle ,即选择器引擎,通过id查找该元素并创建jQuery对象< / p>
选择this
的另一个原因是语义。在语义上,当我进入单击处理程序时,this
在上下文中更容易阅读。这是因为我已经知道处理程序适用于#firstname
。但是,如果我看到 id 选择器,我必须仔细检查并确保处理程序选择器和id
选择器都是同一个。
答案 2 :(得分:1)
使用this
jQuery不需要做选择工作。
因此this
将比选择器快
答案 3 :(得分:0)
ID可以改变(为什么你会是另一回事)
考虑:
$("#firstname").click(function() {
$("#firstname").val("changed");
})[0].id="somethingElse";
VS
$("#firstname").click(function() {
$(this).val("changed");
})[0].id="somethingElse";