Я пытаюсь найти элементы на основе динамического конца идентификатора, который содержит одно или несколько чисел, то есть:

<div id="banana12"></div>
<div id="apple3"></div>

Я пробовал использовать селекторы jQuery, такие как:

find("[id$=/\d+/]")
find("[id$='/\d+/']")

Но безрезультатно. Можно ли использовать такой синтаксис или полный шаблон регулярного выражения, чтобы найти соответствие моим желаемым элементам?

ОБНОВЛЕНИЕ

Точный блок кода, в котором я пытаюсь его использовать:

$.each($('#service_block' + pad(each_panel_incrementer, 2)).find('[id~=/\d+/]'), function (index, value){
    //    
});

В каком шаблоне первого ответа возвращается «нераспознанное выражение».

0
ljs.dev 5 Янв 2014 в 06:49

1 ответ

Лучший ответ

Вы можете легко написать один

$('[id]').filter(function(){
    return /\d+$/.test(this.id)
})

Демонстрация: Fiddle

Я бы порекомендовал добавить селектор элементов вместе с ним по соображениям производительности.


Обновить

$('#service_block' + pad(each_panel_incrementer, 2)).find('[id]').filter(function () {
    return /\d+$/.test(this.id)
}).each(function (index, value) {
    //    
})
2
Arun P Johny 5 Янв 2014 в 07:19
Обновленный ОП. Можно ли использовать шаблон в имеющемся у меня блоке поиска?
 – 
ljs.dev
5 Янв 2014 в 07:00
С обновленным, я получаю "Объект 01 не имеет метода 'find'". Я попробую вернуть each () в начало ...
 – 
ljs.dev
5 Янв 2014 в 07:12
Похоже, я пропустил ) после pad(each_panel_incrementer, 2)
 – 
Arun P Johny
5 Янв 2014 в 07:20