我有一个附加了侦听器的链接(我正在使用YUI):
YAHOO.util.Event.on(Element, 'click', function(){ /* some functionality */});
Run Code Online (Sandbox Code Playgroud)
我希望在不涉及用户单击的另一个场景中发生相同的功能.理想情况下,我可以模拟元素上的"点击"并自动触发功能.我怎么能这样做?太糟糕了,这不起作用:
$('Element').click()
Run Code Online (Sandbox Code Playgroud)
谢谢.
Eli*_*rey 10
MDC有一个使用dispatchEvent模拟点击事件的好例子.
下面是一些模拟元素点击的代码,该元素还会检查是否取消了事件:
function simulateClick(elm) {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var canceled = !elm.dispatchEvent(evt);
if(canceled) {
// A handler called preventDefault
// uh-oh, did some XSS hack your site?
} else {
// None of the handlers called preventDefault
// do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
您正在寻找fireEvent(IE)和dispatchEvent(其他).
对于YUI 3来说,这一切都很好地包含在Y.Event.simulate():
YUI().use("node", function(Y) {
Y.Event.simulate(document.body, "click", { shiftKey: true })
})
Run Code Online (Sandbox Code Playgroud)
您可以单独声明您的函数。
function DoThisOnClick () {
}
Run Code Online (Sandbox Code Playgroud)
然后像现在一样将其分配给 onclick 事件,例如:
YAHOO.util.Event.on(Element, 'click', DoThisOnClick)
Run Code Online (Sandbox Code Playgroud)
您可以随时调用它:-)
DoThisOnClick ()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13353 次 |
| 最近记录: |