0

是否有一种简单明了的方法可以将这两个函数编写为一个函数而不重复。我想我想以编程方式设置开/关方法。

function attachEventHandler(){
   $(document).on({
      ajaxStart: function() {
         $("body").addClass("loading");
      },
      ajaxStop: function() {
         $("body").removeClass("loading");
      }
   });
}

function removeEventHandler(){
   $(document).off({
      ajaxStart: function() {
         $("body").addClass("loading");
      },
      ajaxStop: function() {
         $("body").removeClass("loading");
      }
   });
}
4

2 回答 2

1

我想到的最简单的答案是

var handlers = {
      ajaxStart: function() {
         $("body").addClass("loading");
      },
      ajaxStop: function() {
         $("body").removeClass("loading");
      }
   }

function attachEventHandler(toggle){
   // here we are selecting the 'on' or 'off'
   // property of the $(document) jquery element
   // depending on whether the toggle is true or
   // false. Because the 'on' and 'off' props are
   // functions, we can call the property with
   // `handlers` as the argument
   $(document)[toggle ? 'on' : 'off'](handlers);
}

并像这样使用它:

attachEventHandler(true) // turn on
attachEventHandler(false) // turn off
于 2017-01-05T08:12:13.517 回答
0

您可以使用 .on() 将函数绑定到多个事件:

$('#element').on('keyup keypress blur change', function(e) {
// e.type is the type of event fired
});

或者只是将函数作为参数传递给普通事件函数:

var myFunction = function() {
...
}

$('#element')
.keyup(myFunction)
.keypress(myFunction)
.blur(myFunction)
.change(myFunction)
于 2017-01-05T07:49:26.777 回答