选择器vs jQuery中的这个

时间:2015-07-10 02:43:54

标签: javascript jquery

在以下示例中是否有任何理由使用ID与“this”:

$("#firstname").click(function() {
    $("#firstname").val("changed");
});

VS

$("#firstname").click(function() {
    $(this).val("changed");
});

结果两种方式相同。

4 个答案:

答案 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";