繁体   English   中英

选择器vs jQuery中的这个

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM