jQuery等待多个事件触发

在执行函数之前是否可以“等待”多个事件? 我知道它可能与jQuery deferred obejcts使用$.when等待两个承诺来解决,但我想知道它是否可能只是简单的旧事件?

让我们说点击事件和自定义事件会触发警报,例如:

 $.when("click", "customEvent").then(function(){ alert("yay"); }); 

可以使用延迟,您只需自己创建它们。

 var clickDfd = $.Deferred(); var eventDfd = $.Deferred(); $("div").on("click", function(e) { clickDfd.resolve(); }); $("div").on("some-event", function(e) { eventDfd.resolve(); }); $.when(clickDfd, eventDfd).done(function(){ alert("yay"); }); 
 var click = 0; var hover = 0; $("div").on("click mouseenter", function(e) { if(e.type == 'click') { click = 1; bana(); } else if(e.type == 'mouseenter') { hover = 1; bana(); } }); function bana() { if(click == 1 && hover == 1) { alert(1); click = 0; hover = 0; } else { return false; } } 

好吧,检查事件类型并以旧方式设置它们。 简单的jQuery和JS。

仅在完成/触发两个事件时才会发出警报1。

小提琴