【发布时间】:2014-08-11 19:28:25
【问题描述】:
我想学习如何定义自定义事件,但并不完全像网上所说的那样!让我举例说明:
在 jQuery 网站的 Introducing Custom Events 部分中,它教您如何在代码中创建自定义事件:
例如
$(document).on('myEvent',function(){
alert('Hello World');
});
然后在一个事件中,你会调用:
$(document).trigger('myEvent');
好吧,到这里为止没问题。为了更进一步,我必须再举一个例子:
问题:
假设我们已经定义:
$.fn.myEvent=function(callback){
$(document).bind('contextmenu',this,callback);
};
所以我们可以将其用作:
$(document).myEvent(function(){
alert('Hello World');
});
我的问题是,我们如何定义 "myEvent" 以便我们可以将其用作:
$(document).on('myEvent',function(){
alert('Hello World');
});
使用$(document).myEvent(); 的功能,这样我们就可以将回调函数传递给它,而无需实际trigger 事件?
更多解释:
例如,当我们调用$(document).on('click'); 时,我们实际上并不需要像$(document).trigger('click') 那样触发其他地方的点击事件来让它工作,所以只要click 发生,函数就会触发。我想要一个 "myEvent" 的事件监听器,这样当条件匹配时,函数就会触发。
换句话说(正如下面在 cmets 中提到的),我想知道是否有办法让 jQuery 将 "myEvent" 视为默认事件之一(单击、鼠标移动、提交等)。
非常感谢任何答案或想法。
【问题讨论】:
-
你想完成什么?需要满足哪些条件才能触发 myEvent?
-
您的
myEvent是一个自定义事件,除非您通过触发它来实现它,否则它永远不会在野外发生,那么您到底期待什么? -
@JeffN 条件(例如)是
contextmenu(或者如果用户右键单击页面) -
但这不是
myEvent,是contextmenu事件,这真的没有意义吗? -
要回答你的问题,没有办法让自定义事件像原生事件一样,你会得到最接近的是用
$(document).on('contextmenu', function() { $(document).trigger('myEvent') });之类的东西来触发它
标签: javascript jquery events