jQuery触发器事件但仍然有event.isTrigger false

ada*_*ign 9 jquery events unit-testing

jQuery提供了一个isTrigger属性,允许我们知道事件是"真实事件"还是仅"触发".

$(ele).on("click", function(e){
    if(e.isTrigger){
       // this event was only triggered, not a real event 
    }else{
      // this was a real event 
    }
}) 
Run Code Online (Sandbox Code Playgroud)

对于单元测试目的,有没有办法到trigger一个事件,并以某种方式覆盖isTrigger属性..并在事件回调仍然行为(通过拥有isTrigger === false)好像它是一个真正的点击事件..正在尝试以下代码:

var triggerClick = jQuery.Event("click", {
    isTrigger:false,
    data:{
        isTrigger:false
    }
Run Code Online (Sandbox Code Playgroud)

但它似乎没有正确传递它..

ade*_*neo 5

原生方式如何,完全避免使用jQuery isTrigger:

function simulateClick(elem) {
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, elem,
          0, 0, 0, 0, 0, false, false, false, false, 0, null);
  if (document.createEvent) {
     elem.dispatchEvent(evt);
  } else {
     elem.fireEvent("on" + evt.eventType, evt); // support for IE crap
  }
}
Run Code Online (Sandbox Code Playgroud)

要使用它你只需:

$(ele).on("click", function(e){
    if(e.isTrigger){
       // this event was only triggered, not a real event 
       console.log('triggered');
    }else{
       // this was a real event 
       console.log('clicked');
    }
});

simulateClick(ele);
Run Code Online (Sandbox Code Playgroud)

小提琴