使用 JavaScript 通过自定义属性获取元素
我有一个 XHTML 页面,其中每个 HTML 元素都有一个唯一的自定义属性,如下所示:
<div class="logo" tokenid="14"></div>
我需要一种通过 ID 查找此元素的方法,类似于 document.getElementById()
,但不是使用通用的ID,我想使用自定义 "tokenid"
属性搜索元素。就像这样:
document.getElementByTokenId('14');
这可能吗?如果是的话 - 任何提示将不胜感激。
I have an XHTML page where each HTML element has a unique custom attribute, like this:
<div class="logo" tokenid="14"></div>
I need a way to find this element by ID, similar to document.getElementById()
, but instead of using a general ID, I want to search for the element using my custom "tokenid"
attribute. Something like this:
document.getElementByTokenId('14');
Is that possible? If yes - any hint would be greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
在 HTML 中使用自定义属性并不好。如果有的话,您应该使用 HTML5 的
data
属性 。不过,您可以编写自己的函数来遍历树,但这与
getElementById
相比相当慢,因为您无法使用任何索引:在最坏的情况下,这会遍历整棵树。想想如何改变你的观念,让你能尽可能的利用浏览器的功能。
在较新的浏览器中,您使用
querySelector
方法,它会在哪里:这也会快得多。
更新:请注意下面 @Andy E 的评论。您可能会遇到 IE 问题(一如既往;))。如果您进行大量此类元素检索,那么您确实应该考虑使用 JavaScript 库,例如 jQuery,正如其他人提到的那样。它隐藏了所有这些浏览器差异。
It is not good to use custom attributes in the HTML. If any, you should use HTML5's
data
attributes.Nevertheless you can write your own function that traverses the tree, but that will be quite slow compared to
getElementById
because you cannot make use of any index:In the worst case, this will traverse the whole tree. Think about how to change your concept so that you can make use browser functions as much as possible.
In newer browsers you use of the
querySelector
method, where it would just be:This will be much faster too.
Update: Please note @Andy E's comment below. It might be that you run into problems with IE (as always ;)). If you do a lot of element retrieval of this kind, you really should consider using a JavaScript library such as jQuery, as the others mentioned. It hides all these browser differences.
=>找到div
=>查找具有值的 div
=> finds the div
=> finds the div with a value
如果您使用 jQuery,您可以使用它们的一些选择器魔法来执行以下操作:
作为您的选择器。
If you're using jQuery, you can use some of their selector magic to do something like this:
as your selector.
用普通的 JavaScript 来做这件事就可以了:
Doing this with vanilla JavaScript will do the trick:
您可以使用 JQuery 来完成此操作:
这里是一个小提琴示例。
You can accomplish this with JQuery:
Here's a fiddle for an example.
如果您愿意使用 JQuery,那么:
If you're willing to use JQuery, then:
使用这个更稳定的函数:
Use this more stable Function: