2013-03-20 11 views
7

Mam stronę, która jest tworzona dynamicznie. To może mieć wiele różnych przycisków radiowych z identyfikatorami tak:pomoc selektora jQuery - jak znaleźć element, którego ID zaczyna się i kończy na określonych znakach

<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" /> 

Aby napisać funkcje zmian, robię coś takiego:

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

to działa dobrze. Ale teraz, w tej funkcji zmiany, muszę ukryć kilka innych powiązanych pól. Są one nazwane tak:

<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" /> 

muszę być w stanie chwycić wszystkie pola, których identyfikatory zacząć „cc” i kończą z tym samym numerem jak przycisk radiowy, który został kliknięty (określonej przez zmienną idx. wiem, że mogę dostać wszystkie pola, które zaczynają się od „cC” w ten sposób:

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

Ale jak mogę również wskazać, że trzeba skończyć z tym, co idx jest innymi słowy, jeśli radio cc-radio-opt-1 jest? kliknięte, jak uzyskać tylko cc-number-1 i cc-month-1?

+0

Nie, nie są one powielać identyfikatory. Jeśli przyjrzysz się uważniej, zobaczysz, że jedna grupa zaczyna się od DW, a druga zaczyna od gc. – EmmyS

+1

do wykorzystania w przyszłości. .live jest przestarzałe http://api.jquery.com/live/ powinieneś używać .on zamiast http://api.jquery.com/on/ – iAmClownShoe

+0

@iAmClownShoe - jestem świadomy, ale ze względu na CMS, z którym współpracujemy, utknęliśmy w starszej wersji jQuery. – EmmyS

Odpowiedz

3

Przefiltruj selektor za pomocą selektora "końce z".

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

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

I upewnij się, że to cytaty.

+0

jest '.filter()' szybszy niż '$ ('[id^= cc -] [id $ = 1]')'? –

+0

@mpapec Prawdopodobnie, ale to byłaby mikrooptymalizacja. Użyj dowolnej metody najlepiej pasującej do potrzeb Twojej aplikacji. –

Powiązane problemy