2012-06-02 10 views
12

Ho una pagina shell di Jquery Mobile, che sto caricando un modulo in Ajax. Il modulo ha alcune caselle di controllo, che devo associare a.Come usare Jquery document.on() sugli elementi che vengono inseriti tramite Ajax?

Stranamente, posso farlo funzionare impostare l'ascoltatore direttamente sul pulsante in questo modo:

$('input[name="ohneiln"]').on('change', function() { 
    alert("hello"); 
    }); 

Ma quando sto cercando di impostare l'ascoltatore a $(document) e delegare alla checkbox, l'ascoltatore non incendi:

$(document).on('change', 'input[name="ohneiln"]', function() { 
    alert("hello"); 
}); 

domanda:
Qual è il modo corretto di impostare un evento vincolante per gli elementi "dinamici" essere lo pubblicizzato in via Ajax utilizzando $(document).on()? Non è possibile per gli eventi change o perché sto incontrando problemi?

Grazie per l'aiuto!

+1

tua seconda sintassi sembra che vada bene e dovrebbe funzionare per elementi dinamici, il problema è da qualche altra parte forse. –

+1

funziona bene http://jsfiddle.net/7rDDA/ – Esailija

+0

@Esailija - ma il tuo contributo è lì quando la pagina viene caricata. Il mio non lo è, viene inserito tramite Ajax dopo che l'utente fa alcune cose – frequent

risposta

11

Il modo in cui il metodo .on() cambia in base a come lo si utilizza. Nel primo esempio il metodo .on() si comporta in modo simile a bind e funziona solo su elementi già esistenti.

Il secondo esempio si comporta come .live() o delegate() in molti modi. E funzionerà per gli elementi che verranno aggiunti in seguito.

leggere la documentazione per una spiegazione dettagliata http://api.jquery.com/on/

+0

Grazie per il link e la spiegazione. Suppongo che mi stia attenendo alla prima versione. – frequent

+0

Penso che tu abbia confuso il primo e il secondo esempio. Il primo è "diretto", il 2 ° è "delegato". –

+0

Penso che il tuo giusto grazie razzo :) – codaniel

Problemi correlati