所以我有一个 HTML 列表
<ul>
<li id="item-foo"></li>
<li id="item-bar"></li>
<li id="zoop"></li>
</ul>
在 Javascript 中,我想根据它们的 ID获取列表项的数组。基本上,如果 ID 以开头,item-
那么我想将它放在一个数组中。
我这样做的第一种方法是遍历 DOM 中的所有项目,并将 ID 作为字符串并以这种方式匹配。有没有更好的办法?
所以我有一个 HTML 列表
<ul>
<li id="item-foo"></li>
<li id="item-bar"></li>
<li id="zoop"></li>
</ul>
在 Javascript 中,我想根据它们的 ID获取列表项的数组。基本上,如果 ID 以开头,item-
那么我想将它放在一个数组中。
我这样做的第一种方法是遍历 DOM 中的所有项目,并将 ID 作为字符串并以这种方式匹配。有没有更好的办法?
正如在其他答案中所说,jQuery 选择器 like[id^='item-']
可以正常工作,但应该注意,这不是jQuery 独有的功能,而是W3C指定的 DOM 选择器。
换句话说,如果您不想包含像 jQuery 这样的单一工具包,只是为了使用一些更特殊的选择器,只需编写:
var itemIds = document.querySelectorAll("li[id^='item-']");
而你在那里。
更重要的是,这将比 jQ 更快。jQ 在速度上永远无法与 vanillaJS 相提并论。你不需要在这里使用jQ,所以不要。JQ 可以让生活更轻松,这是真的,但在这种情况下并非如此。选择器是相同的,所以你不需要 jQ。
jQ 在这里所做的只是减慢您的速度,并帮助您编写糟糕的代码......对不起......我需要把它从我的胸膛中解脱出来。
jQuery 中正确的选择器是:
$('li[id^="item-"]')
使用选择器:var some_array = $("li[id^='item-']")
从这里:http ://api.jquery.com/attribute-starts-with-selector/
$("[id^='item-'"]
如果您想使用 jQuery,该选择器应该会为您提供所需的内容。