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)
但它似乎没有正确传递它..
原生方式如何,完全避免使用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)
| 归档时间: |
|
| 查看次数: |
1414 次 |
| 最近记录: |