2011-09-05 19 views
9

Necesito que cada entrada de texto en una clase dada sea un datepicker. Algo así como:JQuery: delegado y datepicker

$("input[type=text].time").datepicker(); 

pero estoy añadiendo una gran cantidad de código a través de Jquery.load() por lo que creo que necesito un delegado. El problema es que no sé cómo hacerlo, porque hasta donde yo sé, el evento de carga no se puede usar en un delegado. Será fácil si existe:

$(document).delegate("input[type=text].time", "load", function(){ 
    $(this).datepicker(); 
}); 
+1

no veo la necesidad de un delegado .... que simplemente confunde al lector. –

+0

Si carga a través de AJAX una página que contiene una nueva entrada de esa clase ("tiempo"), sin usar un delegado no es automática la activación del selector de datos. Cargo una gran cantidad de datos a través de jquery.load() y no es solo la clase de datapicker, hay más como este que deben establecerse a mano en cada carga de página. – Ivan

+2

Si está cargando el contenido, agregue el selector de fecha en 'success'. No he encontrado una buena alternativa a la forma en que deseas usar '.load()'. –

Respuesta

16
$("body").delegate("input[type=text].time", "focusin", function(){ 
    $(this).datepicker(); 
}); 

que utilizan delegado en el cuerpo, porque no sé si usted tiene su código en otros recipientes que puede orientar.

Aquí es un violín que se dirige a una específica div con el delegado:

http://jsfiddle.net/MpqAy/

+0

Entonces, en cada clic, intente agregar un selector de fecha a cualquier resultado válido? –

+0

No es lo que estaba buscando exactamente, pero funciona ... No sé qué sucede cuando reinicia muchas veces datepicker – Ivan

+0

@jk eso es genial. Gracias por publicar esto. Es justo lo que estaba buscando y funciona perfectamente, la primera vez. –