Domanda

Mi chiedo se ciò sia possibile in JQuery.

Ho del codice Javascript che crea oggetti DOM al volo, in risposta alle azioni dell'utente. Alcuni di quegli oggetti DOM si trovano in una struttura specifica - il contenitore ha sempre lo stesso & Quot; class & Quot; attributo.

Quello che mi piacerebbe fare è, ogni volta che una nuova istanza di un oggetto DOM con classe " X " viene creato, voglio eseguire lo stesso codice Javascript. Quel codice aggiungerà un & Quot; onclick & Quot; evento a quell'oggetto DOM.

Sfortunatamente non posso semplicemente mettere il codice che assegna l'onclick in document.Ready (), poiché gli oggetti a cui si lega vengono creati al volo, molto tempo dopo l'esecuzione di document.Ready ().

JQuery ti consente di impostare collegamenti persistenti che verranno automaticamente associati a un tipo di oggetto DOM, anche se generato al volo?

È stato utile?

Soluzione

In passato era coperto da "live", "delegate" o talvolta "bind". Questi sono ora sostituiti da 'on', tuttavia ci sono alcune avvertenze come discusso qui: Persistenza di associazione di eventi Javascript

Altri suggerimenti

Penso di aver trovato la risposta alla mia domanda, proprio nella documentazione di JQuery, abbastanza sorprendentemente.

http://docs.jquery.com/Events/live#typefn

live( type, fn )

Aggiunto in jQuery 1.3: Associa un gestore a un evento (come il clic) per tutti gli elementi corrispondenti correnti e futuri. Può anche associare eventi personalizzati.

Hai cercato un plug-in jQuery chiamato LiveQuery ?

Dalla pagina della documentazione di LiveQuery:

  

Ad esempio puoi usare il   codice seguente per associare un evento clic   a tutti i tag A, anche a quelli A   potrebbe aggiungere tramite AJAX.

$('a') 
>     .livequery('click', function(event) { 
>         alert('clicked'); 
>         return false; 
>     });
  

Dopo aver aggiunto nuovi tag A al tuo   documento, Live Query vincolerà il file   fare clic su evento e non c'è nient'altro   che deve essere chiamato o fatto.

Non possibile in jQuery core (come probabilmente avrai realizzato con altre risposte che fanno riferimento ad alcuni plugin) ... questo può essere un compito molto semplice se non hai necessariamente bisogno di tutte le funzionalità di qualcosa come livequery

Per i browser che li supportano, utilizzare l'evento DOM livello 2 - "DOMNodeInserted":

http: // www. w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-mutationevents

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top