16
<input type ="button" name="buttonsel" id="buttonse1"/>

$("#buttonse1")VS$("[name=buttonse1]")

jquery中使用name和id有什么好处

4

6 回答 6

12

编辑

  • name= 中的名称在表单中必须是唯一的。id= 中的名称在整个文档中必须是唯一的。
  • JavaScript 需要唯一的名称,但是这里已经有太多的文档没有唯一的 name= 名称,所以 W3 人发明了要求唯一的 id 标签。不幸的是,旧的浏览器不理解它。因此,您的表单中需要两种命名方案。

在此处查看完整的详细信息:http: //mindprod.com/jgloss/htmlforms.html#IDVSNAME


Id 可以识别元素的唯一性。

有效的 html 包含每个元素的唯一 ID。

<input type ="button" name="buttonsel" id="buttonse1"/>
<input type ="button" name="buttonsel" id="newbutton"/>//valid for both id and name
<input type ="button" name="buttonsel" id="buttonse1"/>//not valid as id repeated but name is valid even if repeated

但是您可以为可能无法不均等地找到元素的多个项目赋予相同的名称。

于 2012-11-02T07:58:25.000 回答
4

按 ID 选择仍然比 jquery 中的名称更快。

于 2012-11-02T07:58:08.463 回答
3

好的,$("#")与 JS 原生相比document.getElementById()速度较慢,但​​它是您能找到的最快的 jQuery 选择器。但不要在意速度。#很简单#,你的 DOM 中只有一个,对吗?

访问属性总是较慢,如果我们考虑到我们计划name像我们正在处理的那样使用classes并且我们计划拥有 1000 多个具有相同名称的元素....如果这是您所关心的,那么您可以进行一些速度测试.

无论如何,如果您已经拥有一个 ID,并且您知道该 ID 是哇!比你告诉我 1 为什么不使用它的原因?:)

于 2012-11-02T08:10:39.457 回答
2

如果您正在使用,id那么您将只选择 1 个元素,如果您已经找到一个元素,JS 将停止寻找另一个元素。

通过使用namein$('[name="something"]')你可以拥有超过 1 个元素。jQuery 将在每个 HTML 节点中查找name="something". 并且name属性仅对input元素有效(即使您可以在其他元素中使用它)。此外,可以有多个具有name属性的有效元素(例如:<input type="radio"/><input type="checkbox"/>)。

于 2012-11-02T08:09:06.587 回答
1

ID是独特的。所有 HTML 元素都支持ID属性。在 jQuery 中,使用id选择器比使用更快name

NAME不是唯一的,多个元素可以共享相同name的 . NAME属性仅适用于a,forminput元素。

于 2012-11-02T08:03:01.863 回答
0

最重要的是,您会发现在选择器中使用#id 会快得多。看这里:

http://www.componenthouse.com/jQuery-Performance-analysis-of-selectors-td20.html

其次,与在选择器中使用名称不同,HTML 元素上的 ID 将确保一定程度的唯一性。

于 2012-11-02T08:03:33.597 回答