2011-09-05 15 views
9

Ho bisogno che ogni input di testo in una data classe sia un DatePicker. Qualcosa di simile:JQuery: delegate e datepicker

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

ma io sono l'aggiunta di un sacco di codice tramite Jquery.load() quindi credo ho bisogno di un delegato. Il problema è che non so come farlo, perché per quanto ne so, l'evento di caricamento non può essere utilizzato in un delegato. Sarà facile se esiste:

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

non vedo la necessità di un delegato .... che solo confonde il lettore. –

+0

Se si carica tramite AJAX una pagina che contiene un nuovo input di tale classe ("ora"), senza utilizzare un delegato non è automatico l'attivazione del datapicker. Carico molti dati su jquery.load() e non è solo la classe datapicker, ce ne sono altri che devono essere impostati manualmente su ogni caricamento della pagina. – Ivan

+2

Se stai caricando il contenuto, aggiungi il datepicker su 'successo'. Non ho trovato una buona alternativa al modo in cui vuoi usare '.load()'. –

risposta

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

ho usato delegato sul corpo, perché non so se hai il codice in altri contenitori che si possono indirizzare.

Ecco un violino che gli obiettivi di una specifica div con delega:

http://jsfiddle.net/MpqAy/

+0

Quindi, ad ogni clic, prova ad aggiungere un selettore di date a qualsiasi risultato valido? –

+0

Non è esattamente ciò che cercavo, ma funziona ... Non so cosa succede quando reinizializzi molte volte datepicker – Ivan

+0

@jk è grandioso. Grazie per aver postato questo. È proprio quello che stavo cercando e funziona perfettamente - la prima volta. –