使用ID的一部分查找元素

时间:2014-10-29 08:03:07

标签: javascript html css-selectors

我有div其中ID为this_div_id_NUMBER,所有div都有NUMBER个不同的部分。我如何找到所有div只是使用this_div_id部分ID?

6 个答案:

答案 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"结尾的任何内容。来自匹配。


概念验证/演示:http://pagedemos.com/partialmatch/

答案 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)

使用attribute selectors

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_']")