2014-05-21 3 views
2

Je voudrais faire quelque chose comme çajquery événement déclencheur global sur mesure

$("#A").on("click", function(){ 
    $.event.trigger({type:"custom"}); 
}); 
$("#B").on("custom", function(e){ 
    $("#B").removeClass("hidden"); 
}); 
$("#C").on("custom", function(e){ 
    alert("something"); 
} 

Lorsque je déclenche un événement personnalisé en utilisant JavaScript. Je voudrais ensuite être en mesure d'utiliser la fonction .on sur différents éléments de la page. Cliquer sur le "#A" déclencherait alors l'événement pour tous les éléments enregistrés. J'ai remarqué que la fonction de déclenchement est appelée sur un élément au lieu de globalement, ce qui n'est pas ce que je veux.

Fiddle

+0

[Amplify] (http://amplifyjs.com/api/pubsub/) est une excellente bibliothèque minuscule qui vous donnera un système global pub/sub. – Mathletics

+0

Merci Amplify était exactement ce que je cherchais. – Enermis

+0

Il suffit de changer $ .event.trigger ({type: "custom"}); à $ ('*'). trigger ('custom'); –

Répondre

9

Je ne suis pas sûr que je comprends votre question, mais si vous changez votre code à ceci:

$("#A").on("click", function(){ 
    $(document).trigger("custom"); 
}); 
$(document).on("custom", function(e){ 
    $("#B").removeClass("hidden"); 
}); 
$(document).on("custom", function(e){ 
    alert("something"); 
}); 

Il devrait fonctionner. Voici un demo

Questions connexes