13

関数を実行する前に複数のイベントを「待機」することは可能ですか?私は、2つの約束が解決するのを待つためjQuery deferredに使用するオブジェクトでそれが可能であることを知ってい$.whenますが、単なる古いイベントでそれが可能かどうか疑問に思いましたか?

クリックイベントとカスタムイベントがアラートをトリガーするとします。次に例を示します。

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

2 に答える 2

28

据え置きを使用することもできます。自分で作成する必要があります。

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"); 
});
于 2013-02-16T04:07:45.380 に答える
1
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にアラートを出します。

フィドル

于 2013-02-15T10:16:49.067 に答える