2010-12-13 8 views
4
$('#id').bind('change',function() { 
     //do something 
    }).trigger('change'); 

cela fonctionne très bien. mais si ID2 a été généré en utilisant AJAXJQuery: .live() et trigger() ne fonctionnent pas ensemble

je suis en train d'utiliser

$('#id2').live('change',function() { 
    //do something 
}).trigger('change'); 

Mais sa ne fonctionne pas. Est-ce que quelqu'un peut m'aider s'il vous plaît. Merci

Répondre

10

Si vous écrivez

$('#id2').live('change',function() { 
    //do something 
}); 

alors vous faites cela parce que #id2 est pas encore créé. Par contre, déclenche immédiatement un événement. Mais si l'élément n'existe pas encore, l'appeler n'a aucun effet.

Vous devez appeler trigger() une fois que l'élément est créé:

$('#id2').trigger('change'); 

Il n'y a pas besoin d'utiliser live() si #id2 existe déjà. Vous pouvez simplement utiliser bind().

+0

# id2 n'est pas encore créé, donc je dois utiliser live(). Y a-t-il une autre solution à déclencher? – bee

+0

* "vous faites cela parce que # id2 n'est pas encore créé" * Eh bien, vous pouvez utiliser 'live' même si l'élément existe déjà (au cas où vous le remplaceriez périodiquement par quelque chose de nouveau avec le même' id'). Mais je m'attends à ce que ** soit * le problème de l'OP, parce que cela fonctionne si l'élément existe déjà: http://jsbin.com/ipohe4 –

+0

@Raj: C'est le point de Felix: Vous ne pouvez pas appeler * 'trigger' * sur un élément qui n'existe pas. 'trigger' ne fonctionne que sur les éléments existants. –

0

Avez-vous essayé de déclencher l'événement change dans une fonction ajax-complete?

Questions connexes