在执行函数之前是否可以“等待”多个事件?我知道使用jQuery
deferred
对象$.when
来等待两个承诺解决是可能的,但我想知道它是否可能只使用普通的旧事件?
假设单击事件和自定义事件触发警报,例如:
$.when("click", "customEvent").then(function(){ alert("yay"); });
在执行函数之前是否可以“等待”多个事件?我知道使用jQuery
deferred
对象$.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。