Selector vs this in jQuery

Selector vs this in jQuery

本文关键字:jQuery in this vs Selector      更新时间:2023-09-26

在下面的例子中是否有理由使用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的一个原因是性能

当您输入click处理程序时,this已经存在并已设置。

因此,我认为用this创建一个jQuery对象要比调用sizzle(选择器引擎)通过id查找元素并创建jQuery对象 快得多。选择this的另一个原因是语义。从语义上讲,当我输入点击处理程序时,this更容易在上下文中阅读。这是因为我已经知道处理程序是针对#firstname的。但是,如果我看到一个id选择器,我必须仔细检查并确保处理程序选择器和id选择器是同一个。

和使用this的jQuery不需要做选择工作。所以this会比selector

ID可以更改(为什么要更改是另一回事)

考虑:

$("#firstname").click(function() {
    $("#firstname").val("changed");
})[0].id="somethingElse";

$("#firstname").click(function() {
    $(this).val("changed");
})[0].id="somethingElse";