YUI3: How would I trigger an event?

2019-08-21 17:17发布

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.)

2条回答
闹够了就滚
2楼-- · 2019-08-21 17:54

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/

查看更多
放我归山
3楼-- · 2019-08-21 18:07

If you are looking for equivalent of trigger in yui3 you can try using the 'simulate'

Y.one('button selector').simulate('click');

For the above statement to work you will need to add "node-event-simulate" roll up in the use method.

查看更多
登录 后发表回答