2011-10-22 14 views
20

que tienen una tabla que tiene una entrada de fechajquery varios ID misma función

<td style="background-color:#c6efce"><input type="text" id="datepicker0"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker1"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker2"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker3"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker4"></td> 

Estoy tratando de acceder a él a través de la primera

<script> 
    $(function() { 
     $("#datepicker0").datepicker({ 
      showButtonPanel: true 
     }); 
    }); 
    </script> 

¿Cómo accedo a todo?

Respuesta

50

Se podría utilizar el "attribute starts-with" Selector:

$(function() { 
    $("input[id^='datepicker']").datepicker({ 
     showButtonPanel: true 
    }); 
}); 

que el selector coincidirá con cualquier elemento de input cuya id valor comienza con "selector de fechas". Una alternativa sería dar a todos los elementos requeridos una clase común.

También puede seleccionar varios elementos por id utilizando una lista separada por comas:

$("#datepicker0, #datepicker1, #datepicker2"); //List as many as necessary 

Pero eso no es todo escalable si alguna vez necesita añadir más entradas.

10

La mejor manera es utilizar una clase:

<td style="background-color:#c6efce"><input type="text" class="dp" id="datepicker0"></td> 
<td style="background-color:#c6efce"><input type="text" class="dp" id="datepicker1"></td> 
<td style="background-color:#c6efce"><input type="text" class="dp" id="datepicker2"></td> 
<td style="background-color:#c6efce"><input type="text" class="dp" id="datepicker3"></td> 
<td style="background-color:#c6efce"><input type="text" class="dp" id="datepicker4"></td> 
<script> 
    $(function() { 
     $(".dp").each(function(){ 
      $(this).datepicker({ 
       showButtonPanel: true 
      }); 
     }) 
    }); 
</script> 

pero también se puede utilizar esto:

<td style="background-color:#c6efce"><input type="text" id="datepicker0"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker1"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker2"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker3"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker4"></td> 

<script> 
    $(function() { 
     $("#datepicker0,#datepicker1,#datepicker2,#datepicker3,#datepicker4").datepicker({ 
      showButtonPanel: true 
     }); 
    }); 
</script> 

El segundo enfoque no se aconseja.

+1

¿Por qué se utiliza una función de cada uno en el primer ejemplo, en lugar de llamar planificador de evento en la lista de nodos como el segundo? – mikerobi

+0

@mikerobi lol buen punto XD ¿Quizás puedas enviar una respuesta como tal? –

+0

Gracias @JosephMarikle – sradha

0

En lugar de ID, debe usar una clase CSS llamada algo así como has-datepicker y buscar eso.

4

Como entiendo su pregunta, está tratando de seleccionar múltiples ID usando jQuery. He aquí cómo lo hace:

$('#1,#2,#3') 

Simplemente separe los ID por comas.

Pero esta no es la mejor manera de lograr esto. Que realmente debe utilizar una clase: Asignar a cada td una clase y uso:

$('td.myClass') 

Alternativamente, podría asignar un ID de la tabla y seleccione todos sus hijos td. HTML:

<table id="myTable"> 
    <td>text</td> 
    <td>text</td> 
</table> 

jQuery:

$('table#myTable td') 
0

jQuery UI añade automáticamente la clase "hasDatePicker" a todos los elementos que tienen un selector de fechas. Puede consultar la página por algo como $ ("input.hasDatePicker") para obtener todos los selectores de fecha.

+0

No antes de que se haya aplicado el 'datepicker' al elemento (como en este caso ...) –

+0

Ah, leí la pregunta original equivocada, pensó que la pregunta original era sobre acceder a ellos, no crearlos, pero supongo que el OP sí proporcionó un fragmento de código donde mostró que estaba creando uno ... – ima007

0

Usted puede utilizar esto como así $('#datepicker0,#datepicker1,#datepicker2,#datepicker3,#datepicker4)

Cuestiones relacionadas