2010-04-13 11 views
6

Usando jQuery, ¿cuál es la mejor manera de inicializar automáticamente un complemento en todos los elementos actuales y futuros de una clase específica?¿Utiliza jQuery live() para inicializar complementos?

Por ejemplo, supongamos que quiero que todos los elementos <input type="text" class="datepicker" /> tengan el complemento jQuery UI Datepicker, incluidos los que pueda crear en tiempo de ejecución.

Esencialmente, quiero hacer algo como esto:

$('.datepicker').live('create', function() { 
    $(this).datepicker(); 
}); 

Pero, por supuesto, no hay una crear evento que pueda usar.

Respuesta

6

Puede utilizar el .livequery() plugin para esto, los informes de TI de la muerte debido a .live() se han exagerado mucho :)

.live() procese el evento de la burbuja entonces tiene un propósito ligeramente diferente. Con .livequery() desea lograr lo que quiere de esta manera:

$('.datepicker').livequery(function() { 
    $(this).datepicker(); 
}); 

Esto se ejecutará en actuales y futuras.datepicker elementos.

+0

Perfecto - gracias Nick –

+2

es posible hacer con .live()? – Codler

5

Según tengo entendido, después de crear un archivo personalizado. que es como esto:

$('.datepicker').bind('foo', { 'bar' : 'bam' }, function(e) 

    { 

    $(this).datepicker(); 

    }); 

$('.datepicker').trigger('foo'); 

esperanza esto ayuda

+2

+1 no depende de un complemento adicional –