2011-01-20 11 views
35

Ho avuto una situazione insolita ieri sera.jQuery corrisponde solo a una parte dell'id dal div

Ho bisogno di abbinare solo una parte di id. Lascia che ti tutto chiaro con un esempio

Ho pochi div come

<div id="sales_info_1">... ...... ...... ...... ...</div> 
<div id="sales_info_2">... ...... ...... ...... ...</div> 
<div id="sales_info_3">... ...... ...... ...... ...</div> 

e jQuery va come

jQuery("div#dont_know_what_to_write_here").bind("click", function(){ 
    ... ...... ...... ...... ... 
}); 

ho bisogno di corrispondere solo sales_info, ignorando _1, _2 o _anything qualcuno può suggerirmi come ottenere questo?

Grazie

+0

Vuoi associare l'evento click su tutte le div che hanno id sales_info_ ? –

+0

@all: grazie a tutti per i vostri suggerimenti/soluzioni –

risposta

64

è possibile utilizzare il "Starts With" selector:

$('div[id^="sales_info_"]') 

Preferirei consiglio di utilizzare un nome di classe unico per i vostri elementi che si può selezionare però.

+0

Perché lo consigliate? –

+3

Perché semplifica tutto ed è più semantico. Le classi specificano esplicitamente che l'elemento è un * tipo di cosa *, mentre gli ID con nomi simili implicano solo questo nel migliore dei casi. – deceze

+0

allo stesso modo c'è un modo per ignorare un particolare ID durante una selezione parziale? – Sridhar

1

In alternativa, aggiungere class="sales_info" al markup HTML.

Quindi, fare questo:

$(".sales_info").bind("click", function() { 
    ... 
} 
2

prova con questo

$("div[id^='sales_info_']").bind(...); 
0

È possibile utilizzare selettore CSS

provare questo codice

html

<div id="sales_info_1"></div> 
<div id="user_info_1"></div> 
<div id="sales_info_2"></div> 
<div id="user_info_2"></div> 
<div id="sales_info_3"></div> 
<div id="user_info_3"></div> 

css

.red{ 
    display:block; 
    float:left; 
    width:50px; 
    height:20px; 
    background-color:#FF0000;} 
.blue{ 
    display:block; 
    float:left; 
    width:50px; 
    height:20px; 
    background-color:#0000FF;} 

jquery

$('div[id^="sales"]').addClass('red'); 
$('div[id^="user"]').addClass('blue'); 

selettore CSS ^= selezionerà div con ID che iniziano con il valore specificato e aggiungere lo stile css.

Problemi correlati