所有触发的多个其他事件的jquery .on()事件

时间:2018-02-05 02:03:03

标签: javascript jquery events

我想要一个只在多个其他事件处理程序完成时运行的事件处理程序。有没有简单的方法在jQuery中执行此操作?我所拥有的工作正常,但似乎不必要地复杂。

https://jsfiddle.net/sguah2e4/1/

<div id="el1">waiting for element 1 ...</div>
<div id="el2">waiting for element 2 ...</div>
<div id="doneStatus">waiting for both to complete ...</div>

<script>
$(window).on('load', function() {
  initMultiHandler();
  updateEl1();
  updateEl2();
});

function initMultiHandler() {
  var event1Done = false;
  var event2Done = false;
  $('#el1').on('fetched', function () {
    event1Done = true;
    if (event2Done) allDone();
  });
  $('#el2').on('updated', function () {
    event2Done = true;
    if (event1Done) allDone();
  });
}

function updateEl1() {
  $('#el1').text('element 1 is done!').trigger('fetched');
}

function updateEl2() {
  $('#el2').text('element 2 is done!').trigger('updated');
}

function allDone() {
  $('#doneStatus').text('both are complete now');
}
</script>

请注意,每个元素的事件类型都不相同 - 因此我的示例中的fetchedupdated之间存在差异。

理想情况下,我希望这样的1-liner代替:

function initMultiHandler() {
  $.on($('#el1').on('fetched') && $('#el1').on('updated'), allDone);
}

jQuery中有没有这样的东西?

0 个答案:

没有答案