【发布时间】:2013-10-17 06:58:11
【问题描述】:
我试图弄清楚如何从 DOM(从上到下)获取包含以给定字符串为前缀的特定属性的元素列表,例如,“猴子”就是那个字符串。如果有的话。
我使用$.each() 和:contains 提出了这个非常松散的想法,但在两者之间我看不出有什么好处。所以我想我会来这里挑选一些大脑。
我想要做的基本上是扫描我的 dom,当我调用一个给定的函数时,我最终会建立起来。这将寻找具有在这种情况下以“猴子”为前缀的属性的元素,想想data- 属性及其用途。减去提供特定选择器,而不是实际使用 data- 属性。
想象一下这个 HTML
<div monkey-user="bar" monkey-permission="read">
<span monkey-user="bar" monkey-permission="read">some text</span>
</div>
<div>
<input type="text" monkey-user="bar" monkey-permission="none">
</div>
<input type="text">
<input type="text">
<input type="text">
<input type="text">
然后是这个 javascript/jquery 概念,除非可以使用更清洁的东西。
var arr = new Array();
$("*").each(function()
{
if($(this).children().length == 0)
{
if($(':contains("monkey-")',this))
{
arr.push($(this));
}
}
});
在这种情况下,arr 的结果将是上面的 3 个元素,其中包含 monkey-,否则会跳过其他任何内容。还值得注意的是用户/权限是为了举例,从长远来看,这些可以是其他特定的东西,将根据需要使用(在这种情况下,这些将类似于使用 data 属性但我认为这将是另一个问题,因为没有人愿意将其作为奖励。
【问题讨论】:
-
这似乎不是一个好主意。如果你描述你的实际用途,也许会有更好的方法。
-
没有属性通配符选择器,因此您所做的任何事情都会效率低下。您必须遍历 dom 中的每个元素,然后遍历每个元素上的每个属性以查找匹配的属性。我建议找到另一种选择这些元素的方法。
-
什么不是真正使用
data-属性而不是试图模仿它?
标签: javascript jquery html jquery-selectors