【问题标题】:Is there any difference between this selectors这个选择器之间有什么区别吗
【发布时间】:2014-08-08 16:12:56
【问题描述】:

我继承了我应该修复的非常混乱的 jQuery 代码。有一些非常有趣的代码行 :) 但这让我想知道。

$("input[type=submit][id='Verifier']").addClass("bttnDisable stateDisable").attr("disabled", "disabled");

有什么不同

$("#Verifier").addClass("bttnDisable stateDisable").attr("disabled", "disabled");

页面上没有其他具有此类 ID 的元素,所以我觉得它没什么用。我认为如果有另一个元素具有相同的 ID(这是错误的 AFAIK),它可能有一些意义。还是它有其他一些我不知道的优势?还有,是不是比较慢?

【问题讨论】:

  • 你是对的,这是一条无用的行。
  • 当你有 id (因为 id 必须是唯一的),那么其他 jquery 选择器没有任何意义。 $("#Verifier") 是正确的方法,虽然两个选择器都会做同样的事情,但后面的更快。
  • 当您使用它时,您还可以将.attr("disabled", "disabled") 更改为.prop('disabled', true)
  • 确实,一个 Id 应该只在页面上出现一次,所以如果页面的其余部分也很好,那么第二个代码就很好了。如果 Verifier 是一个类,我会推荐使用 input.Verifier[type=submit] 作为选择器。如果它是在 jQuery 中实现的,为什么不使用它呢?
  • @Grundy 但是如果“验证器”在注册页面上的提交按钮上,而其他“验证器”是其他页面上的 DIV,并且两个页面都使用相同的 JS 文件,那么input[type=submit][id='Verifier'] 将选择仅提交注册页面上的按钮和#Verifier 将选择它们(因为它们不在同一页面上)

标签: javascript jquery html jquery-selectors


【解决方案1】:

由于id 在文档中应该是唯一的,因此将具有 id 的其他选择器链接到目标元素似乎是没有用的。

有什么不同吗?

是的,id 选择器将使用原生的document.getElementById 方法,并且会比链式选择器快得多。

【讨论】:

    猜你喜欢
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 2014-11-15
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多