2013-03-20 1 views
7

У меня есть страница, созданная динамически. Он может иметь несколько различных радио-кнопок с ID как так:Справка по селектору jQuery - как найти элемент, идентификатор которого начинается и заканчивается конкретными символами

<input type="radio" id="cc-radio-opt-0" /> 
<input type="radio" id="cc-radio-opt-1" /> 
<input type="radio" id="gc-radio-opt-0" /> 
<input type="radio" id="gc-radio-opt-1" /> 

Для того, чтобы написать функции изменения, я делаю что-то вроде этого:

$('[id^=cc-radio-opt-]').live("change", function() { 
    var idx = $(this).attr('id').split('-').pop(); 
}); 

Это хорошо работает. Но теперь, внутри этой функции изменения, мне нужно скрыть кучу других связанных полей. Они названы так:

<input type="text" id="cc-number-0" /> 
<input type="text" id="cc-month-0" /> 
<input type="text" id="gc-number-0" /> 
<input type="text" id="gc-month-0" /> 
<input type="text" id="cc-number-1" /> 
<input type="text" id="cc-month-1" /> 
<input type="text" id="gc-number-1" /> 
<input type="text" id="gc-month-1" /> 

мне нужно, чтобы быть в состоянии захватить все поля, чьи идентификаторы начинаются с «CC» и заканчиваться тем же номером, радио-кнопки, которая была нажата (определяется переменной idx. Я знаю, что я могу получить все поля, которые начинаются с «CC», делая это:

$('[id^=cc-]'); 

Но как я могу также указать, что они должны закончить с тем, что idx это другими словами, если cc-radio-opt-1 радио? щелкнули, как я могу получить только cc-number-1 и cc-month-1?

+0

Нет, они не дублируют идентификаторы. Если вы посмотрите более внимательно, вы увидите, что одна группа начинается с cc, а другая начинается с gc. – EmmyS

+1

для справок в дальнейшем. .live устарел http://api.jquery.com/live/ вы должны использовать .on вместо http://api.jquery.com/on/ – iAmClownShoe

+0

@iAmClownShoe - я знаю, но из-за CMS, с которой мы работаем, мы застряли в старой версии jQuery. – EmmyS

ответ

3

Отфильтруйте селектор с помощью селектора «концы с».

http://api.jquery.com/attribute-ends-with-selector/

$('[id^="cc-"]').filter('[id$="idx"'); 

И не забудьте включить кавычки.

+0

является '.filter()' быстрее, чем '$ ('[id^= cc -] [id $ = 1]')'? –

+0

@mpapec Возможно, но это была бы микро-оптимизация. Используйте любой метод, который наилучшим образом соответствует потребностям вашего приложения. –

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