如何防止dragend后的touchend事件?

时间:2012-05-12 01:12:49

标签: javascript mobile javascript-events jquery

我正在一个移动网站上工作,并且在我不想要他们的情况下解雇事件。

为了简单起见,它写的是这样的(在jQuery中):

el.on('touchend', function(ev) {
    ev.preventDefault();
    // fire an ajax call
};

但是,有时用户在滚动页面时会点击该项目,导致ajax请求被触发(从而改变页面状态)。

我想不出办法(ev.stopPropagation()不起作用),所以我决定观看dragstart和dragend事件。

el.on('dragstart', function() {
     el.off('touchend');
});

el.on('dragend', function(ev) {
     ev.stopPropagation(); // <-- seems to do nothing
     // add back the event above (the function is set to a var)
});

如果我在touchend回调中警告,我得到确认,在我停止拖动后,touchend事件确实发生了火灾。

有没有人知道如何防止任何其他事件被解雇?我希望我只是失明并且遗漏了一些明显的东西。

提前致谢!

2 个答案:

答案 0 :(得分:0)

您无法阻止事件触发,您只能阻止该事件的默认行为发生。

如果您担心在touchend事件触发之前页面状态发生变化,您应该更改要检查的功能,然后考虑状态更改。

答案 1 :(得分:0)

我认为在这种情况下你应该使用

event.stopImmediatePropagation();