2015-06-08 3 views
3

Я набор кнопок, как это:Выберите элемент со сложными ID шаблона

<button id="grid1_createBtn">Create</button> 
<button id="grid1_updateBtn">Update</button> 
<button id="grid2_createBtn">Create</button> 
... 

Эти кнопки не имеют какого-либо класса, так что мне нужно, чтобы выбрать их с помощью их ID. Часть «сетки» идентификатора является статической и одинаковой для всех кнопок. Я нашел this answer, но я не хочу использовать ​$("[id^=grid]"), потому что может существовать какой-то другой элемент с начальным идентификатором «сетка». Может кто-нибудь мне помочь?

+0

сделать что-то вроде этого $ (". ParentClass> [id^= grid]") –

+1

так почему вы не можете назначить класс вместо этого? –

+0

Все кнопки начинаются с 'grid' также заканчиваются' Btn'? – lshettyl

ответ

6

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

$('button').filter(function(){ 
    return /^grid\d+_\w+Btn$/.test(this.id) 
}) 
+0

Я никогда не думаю об использовании фильтра, несмотря на то, что это супер-опрятно и супермощно. –

+0

Wut? Я не ОП –

0

Попробуйте это:

var id= 1; 
$("button[id*='grid" + id+ "_createBtn']"); 
0

Вы можете также комбинировать селекторы атрибутов, как показано ниже, пока все ваши кнопки начинаются с grid и заканчиваются Btn.

$('button[id^="grid"][id$="Btn"]') 

-A Demo-

0

Вы можете комбинировать!

$("[id^='grid'][id$='Btn']") 

$("[id^='grid'][id$='Btn'][id*='_']") 

или вы можете смешать с Denis Séguret ПОДХОД

$("button[id^='grid']").filter( 
    function(){ 
     return /^grid\d+_(create|update)Btn$/.test(this.id); 
    } 
) 

это быстрее, чем только фильтр.

Смежные вопросы