JQuery селектор для начала, но только с определенной длиной / уровнем детей - PullRequest
1 голос
/ 15 ноября 2011
<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>

Учитывая этот (psuedo) набор тегов, я хотел бы иметь возможность получить все теги "уровень ниже".например,

id=1 получает 1_1 и 1_2, но не 1_1_1 и т. д.
id=2_2 получает 2_2_1 и т. д.

Я пробовал div[id^=1]но это возвращает все уровни ниже.
Обратите внимание, что это НЕ вложенные теги, поэтому Children не работает: (

Как я могу ограничиться только id_?

например div[id=1_1_?]

Существует ли подстановочный знак из одного символа или способ ограничения длины селектора?

1 Ответ

1 голос
/ 15 ноября 2011

Вы можете использовать атрибут начинается с указанного вами селектора, а затем filter результаты:

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

Вот рабочий пример .Обратите внимание, что это также возвращает div с 1, так как id.Вы можете предотвратить это, добавив еще одно условие в оператор return:

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

Наконец, обратите внимание, что значения id не могут начинаться с цифры, если вы не используете тип документа HTML5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...