0

我正在一个移动网站上工作,并且在我不希望它们触发的事件中挣扎。

为了简单起见,它是这样写的(在 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在我停止拖动后事件确实触发了。

有谁知道如何防止任何其他事件触发?我希望我只是失明并且错过了一些明显的东西。

4

2 回答 2

0

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

如果您担心在 touchend 事件触发之前您的页面状态会发生变化,您应该只更改您的函数以检查并考虑状态变化。

于 2012-05-12T01:19:26.650 回答
0

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

event.stopImmediatePropagation();

于 2013-06-06T16:25:30.610 回答