2011-01-20 19 views
35

Me encontré con una situación inusual ayer por la noche.jQuery solo coincide con parte de id de div

Necesito hacer coincidir solo una parte de la identificación. Déjenme todo claro con un ejemplo

tengo unos divs como

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

y jQuery va como

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

tengo que coincidir sólo sales_info, ignorando _1, _2 o _anything , ¿alguien puede sugerirme cómo lograr esto?

Gracias

+0

¿Quieres enlazar el evento click en todos los divs que tienen ID sales_info_ ? –

+0

@todos: gracias a todos por sus sugerencias/soluciones –

Respuesta

64

podría utilizar el "Starts With" selector:

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

prefiero recomiendo que utilice un nombre de clase única para sus elementos que se puede seleccionar sin embargo.

+0

¿Por qué lo recomienda? –

+3

Porque simplifica todo y es más semántico. Las clases especifican explícitamente que el elemento es un * tipo de cosa *, mientras que las identificaciones con nombres similares solo implican esto en el mejor de los casos. – deceze

+0

¿hay alguna manera de ignorar una identificación particular durante una selección parcial? – Sridhar

1

otra parte, añadir class="sales_info" a su marcado HTML.

Entonces, hacer esto:

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

Pruebe con esta

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

Puede utilizar el selector CSS

probar este código

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'); 

selector CSS ^= seleccionará div con ID que comienzan con el valor especificado y añadir el estilo CSS.