jquery选择器开始但只有某些长度/级别的孩子?

时间:2011-11-15 08:24:18

标签: jquery jquery-selectors

<div id='1'></div>
<div id='1_1'></div>
<div id='1_1_1'></div>
<div id='1_1_2'></div>
<div id='1_2'></div>
<div id='2'></div>
<div id='2_1'></div>
<div id='2_2'></div>
<div id='2_2_1'></div>

鉴于这个(伪)标签集,我希望能够获得所有“级别低于”标签。 e.g。

id=1获取1_11_2,但不会1_1_1等。
id=2_2获取2_2_1

我尝试了div[id^=1],但这会返回以下所有级别 注意,这些不是嵌套标签,因此儿童不起作用:(

如何限制为id_

e.g。 div[id=1_1_?]

是否有单个字符通配符,或限制选择器长度的方法?

1 个答案:

答案 0 :(得分:1)

您可以使用您提到的属性starts-with selector,然后filter结果:

var elems = $("div[id^='1']").filter(function() {
    return this.id.length <= 3; 
});

这是一个working example。请注意,这也会返回仅div的{​​{1}},因为它是1。您可以通过向id语句添加另一个条件来阻止这种情况:

return

最后请注意,var elems = $("div[id^='1']").filter(function() { return this.id.length <= 3 && this.id.length > 1; }); 值不能以数字开头,除非您使用的是HTML5文档类型。