2010-05-19 6 views
5

Mi piacerebbe avere lo stesso comportamento di "live", ma senza utilizzare eventi. È possibile? Ho bisogno di questo perché sto usando un file javascript diverso che crea alcuni elementi a cui ho bisogno di aggiungere classi CSS.JQuery 'live' per selettore?

Il seguente codice deve essere eseguito una volta che tale elemento è stato aggiunto al dominio: $ (". MyClass"). AddClass ("myNewClass");

È possibile?

risposta

2

Il plugin liveQuery è in grado di questo.

http://brandonaaron.net/code/livequery/docs

Dalla documentazione:live Query ha anche la capacità di sparare una funzione (callback) quando corrisponde a un elemento nuovo e un'altra funzione (callback) per quando un elemento non è abbinato.


EDIT:

Questa sarebbe una soluzione di codice utilizzando livequery.

$('.myClass').livequery(function() { $(this).addClass('myNewClass') }); 
+0

Funziona perfettamente! Grazie – SaphuA

+0

L'altra opzione è di fare un rebind quando il modulo cambia ad esempio su ajax success. Livequery può rallentare un po 'le cose. –

+0

@James Westgate - Che forma vuoi dire? L'OP voleva aggiungere una classe per gli elementi aggiunti al DOM da un altro file js che non può essere modificato. Non c'è nessun evento da legare (o ri-legare) a quello. – user113716

0

Forse non capisco quello che chiedete, ma se si sta utilizzando jQuery, perché si può non utilizzare un evento di aggiornamento guidato?

La soluzione liveQuery che Patrick suggerisce (che funzionerà bene) utilizza gli eventi in background, proprio come "live".

+0

Perché sono in una situazione strana;) Non riesco a modificare il codice javascript che sto utilizzando e non riesco a far scattare gli eventi. Conosco i nomi di classe che usa per gli elementi creati, quindi ho pensato che sarebbe stata la miglior soluzione per me. – SaphuA