是否可以像jQuery一样通过id选择元素?
Is it possible to select elements by id like in jQuery?
目前我选择像jQuery('a#encode-url-button, a#decode-url-button')
这样的元素,是否有可能不创建一个新的函数来选择纯js中的相同元素?比如document.getElementById('encode-url-button, decode-url-button').onclick = function...
?
是的,用document.querySelectorAll
。它接受一个CSS选择器。大多数现代浏览器都支持。
如果你真的需要支持IE7和更早的版本,那么当然你可以只做两个getElementById
调用,如果它们不是锚,就扔掉它们。(这就是选择器a#someid
所做的)
如果你要对元素进行操作,你需要循环querySelectorAll
的结果列表,因为DOM API不具有jQuery所具有的"集合论"方向。例如:
var list = document.querySelectorAll("#encode-url-button, #decode-url-button");
var index;
for (index = 0; index < list.length; ++index) {
list[index].onclick = clickhandler;
}
function clickHandler() {
// ....
}
(我不提倡使用这样的DOM0处理程序,看看使用addEventListener
代替,但正如你在问题中引用的onclick
…)
不知道,99.99%的情况下,将id
选择器与标记选择器(a#someid
)组合在一起是没有意义的,因为id
值是唯一的。#someid
通常更好。给它添加标签不会让任何事情变得更快;事实上,它让事情变慢了。这样做的唯一原因是,元素有时会有一个标签(例如,a
),有时会有另一个标签(例如,我不知道,div
),并且只有当它有一个而不是另一个时才想要获取它。
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- difference between '$(<%= DDL.ID %>) & $('
- 使用Javascript获取所选选项ID
- 根据id将json数组组合为一个json数组
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 对id以某个字符串开头的元素进行计数
- 如果元素's的ID以数字开头
- 通过id和class属性获取元素
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 使用当前日期生成随机id
- Javascript-ID冲突的几率
- Href:当前DIV中的目标ID
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- coffeescript 的行为就像 ID 仍然存在一样,但它不存在
- 如何使用来自其他 json 对象的 id 和父 id 创建像树结构一样的 json
- 尝试使用查询删除iframe ID,同时像Facebook一样单击
- 如何设置数据幻灯片到,就像我为每个.carousel-indicators li设置id一样
- 我该如何创建数组组并对其进行计数,就像MySQL组中给定的列id一样
- 是否可以像jQuery一样通过id选择元素?
- 传递变量,就像Javascript中的输入ID一样