2010-05-03 2 views
0

Pourquoi est-ce que je ne peux pas déclencher le gestionnaire via triggerHandler s'il a été lié via live?jQuery TriggerHandler ne déclenche pas le jeu d'événements keyup via live

Par exemple

form.find('#code').live('change keyup',function(){ 
    process_code($(this)); 
    }); 

startups après le chargement de la fenêtre:

/* Triggers */ 
    if(checkCookie('banner_ready_code')) 
    { 
    $('#form').find('#code').triggerHandler('keyup'); 
    } 

Rien ne se passe ...

Si je suis simplement en liant .Modification ou .keyup, triggerHandler travaille correctement comme prévu.

Si c'est bug, où le signaler. Trop paresseux :) Si non, s'il vous plaît expliquer. :)

Répondre

1

Pas un bug. triggerHandler() ne bulle pas l'événement, et live() repose sur le bouillonnement d'événements puisque le gestionnaire est placé à la racine de l'arborescence DOM.

De live() documents: http://api.jquery.com/live/

Le gestionnaire transmis à .live() est jamais lié à un élément; à la place, .live() lie un gestionnaire spécial à la racine de l'arborescence DOM.

et

Aucun gestionnaire est lié directement à la <div>, de sorte que l'événement bulles dans l'arbre DOM.

De triggerHandler() docs: http://api.jquery.com/triggerHandler/

événements créés avec .triggerHandler() ne bouillonne pas la hiérarchie DOM; Si elles ne sont pas traitées directement par l'élément cible, elles ne font rien.

Questions connexes