Search code examples
javascriptyuiyui3

YUI3: How would I trigger an event?


Suppose I have a click event on a link/button/etc.

var myButton = Y.one('.button');

myButton.on('click', function() {
   // code
});

There is something else happening on the page that I want to trigger a click event on this button. How would I do this?

I saw YUI3's fire() method, but it looked like that was designed for custom events. If I am supposed to use fire(), then will myButton.fire('click') work?

(I'm looking for the equivalent of jQuery's .trigger() method, which works on DOM events or custom events.)


Solution

  • Do you really need to trigger the click event on the button? Take the HTML below

        <button id="myButton">Click Me</button>
    <br>
        <a href="#">Click Me</a>
    

    You can make use of the custom events to put the real logic somewhere central.

    YUI().use("node","event",function(Y){
        Y.one("#myButton").on("click",function(){Y.fire("custom:doThing")});
        Y.all("a").on("click",function(){Y.fire("custom:doThing")});
        Y.on("custom:doThing",function(){console.log("Do my thing, regardless of event source")})
    });
    

    Fiddle: http://jsfiddle.net/WZZmR/