2013-03-20 11 views
7

Ho una pagina creata dinamicamente. Si può avere un certo numero di diversi pulsanti di scelta con ID di questo modo:jquery help del selettore - come trovare l'elemento il cui ID inizia e termina con caratteri specifici

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

Per scrivere funzioni di modifica, sto facendo qualcosa di simile:

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

Questo metodo funziona bene. Ma ora, all'interno di quella funzione di modifica, ho bisogno di nascondere un mucchio di altri campi correlati. Essi sono chiamati in questo modo:

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

ho bisogno di essere in grado di afferrare tutti i campi i cui ID iniziano con "cc" e terminare con lo stesso numero del pulsante di scelta che è stato cliccato (determinato dalla variabile idx. so che posso ottenere tutti i campi che iniziano con "cc" in questo modo:

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

Ma come posso anche indicare che hanno bisogno di finire con qualsiasi idx è In altre parole, se la radio cc-radio-opt-1 è? cliccato, come posso ottenere solo cc-number-1 e cc-month-1?

+0

No, sono Non duplicare gli ID. Se guardi più attentamente, vedrai che un gruppo inizia con cc e l'altro inizia con gc. – EmmyS

+1

per riferimento futuro. .Live è stato deprecato http://api.jquery.com/live/ si dovrebbe utilizzare .on invece http://api.jquery.com/on/ – iAmClownShoe

+0

@iAmClownShoe - Sono consapevole, ma a causa di il CMS con cui lavoriamo, siamo bloccati con una versione precedente di jQuery. – EmmyS

risposta

3

Filtra il tuo selettore usando il selettore "finisce con".

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

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

E assicurarsi di includere le virgolette.

+0

è '.filter()' più veloce di '$ ('[id^= cc -] [id $ = 1]')'? –

+0

@mpapec Forse, ma sarebbe una micro-ottimizzazione. Utilizzare qualsiasi metodo si adatta meglio alle esigenze della vostra applicazione. –

Problemi correlati