我有div
其中ID为this_div_id_NUMBER
,所有div
都有NUMBER
个不同的部分。我如何找到所有div
只是使用this_div_id
部分ID?
答案 0 :(得分:15)
您可以使用querySelectorAll命中部分属性,包括ID:
document.querySelectorAll("[id^='this_div_id']")
等号旁边的^表示"以"开头,您可以使用*代替,但它容易出现误报。
您还要确保在attrib选择器中的comapare值周围使用引号(或者),以便在querySelectorAll上获得最大的兼容性;在jQuery和常绿浏览器中它并不重要,但对于旧浏览器而言,它确实很重要。
编辑:迟到的要求需要更具体的选择器:
document.querySelectorAll("[id^='this_div_id']:not([id$='_test_field'])");
not()段会阻止以" _test_field"结尾的任何内容。来自匹配。
答案 1 :(得分:10)
querySelectorAll
querySelectorAll接受CSS选择器并返回与该css选择器匹配的所有元素的HTMLNodeList(一种数组)。
css选择器^
(以...开头)可用于您的目的。 详细了解in this article。
对于您的情况,它将是document.querySelectorAll("[id^='this_div_id']");
请注意,querySelectorAll
不会返回实时节点列表。这意味着,对dom的任何更改都不会在函数的返回值中实时更新。
另一种方法是将所有元素分配给一个特定的类,然后你可以使用getElementsByClassName
(比querySelector快得多)。
var divs = document.getElementsByClassName("divClass");
答案 2 :(得分:2)
div[id^="this_div_id"]
答案 3 :(得分:1)
试试这个选择器:
[id^="this_div_id_"]
纯JavaScript:(reference)
document.querySelectorAll('[id^="this_div_id_"]')
jQuery:(reference)
$('[id^="this_div_id_"]')
CSS:(reference)
[id^="this_div_id_"] {
/* do your stuff */
}
为什么会这样?
使用选择器中的[],您可以选择属性。使用' ='准确匹配值或使用' ^ ='检查值是否以。 Read more about this here.
答案 4 :(得分:1)
最好使用类。 但是你需要一个解决方案(假设你使用jQuery):
$("*[id^='this_div_id']")
答案 5 :(得分:1)
只需使用如下所示的属性选择器:
$("[id^='this_div_id_']")