[英]Selector vs this in jQuery
在以下示例中是否有任何理由使用ID与“this”:
$("#firstname").click(function() {
$("#firstname").val("changed");
});
VS:
$("#firstname").click(function() {
$(this).val("changed");
});
结果无论哪种方式都是一样的。
这个想法是,如果您更改上面的firstname
,您将不必在第二个块中再次更改它。 例如:
$("#my-new-name").click(function() {
// "this" remains the same.
$(this).val("changed");
});
此外,在性能方面, jQuery
不需要解析字符串并运行其选择器引擎,而是this
是一个原始DOMElement,它可以快速检测其类型并继续前进。
使用this
而不是id
一个原因是性能 。
当您输入单击处理程序时, this
已经存在并已设置。
因此,我想这是更快速地创建一个jQuery对象this
,而不是调用滋滋声 ,选择引擎,找到的ID元素并创建jQuery对象
选择this
另一个原因是语义 。 从语义上讲,当我进入单击处理程序时, this
在上下文中更容易阅读。 这是因为我已经知道处理程序是针对#firstname
。 但是,如果我看到一个id选择器,我必须仔细检查并确保处理程序选择器和id
选择器是同一个。
并使用this
jQuery无需做选择工作。 所以this
比选择器快
ID可以改变(为什么你会是另一回事)
考虑:
$("#firstname").click(function() {
$("#firstname").val("changed");
})[0].id="somethingElse";
VS
$("#firstname").click(function() {
$(this).val("changed");
})[0].id="somethingElse";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.