如何防止拖拽后的触端事件
How to prevent touchend event after dragend?
我正在一个移动网站上工作,并在我不希望它们触发时为事件触发而苦苦挣扎。
为了简单起见,它写了这样的东西(在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
事件在我停止拖动后确实触发了。
有谁知道如何防止任何其他事件触发?我希望我只是瞎了眼,错过了一些明显的东西。
您无法阻止触发事件,只能阻止该事件的默认行为发生。
如果您担心在触端事件触发之前页面的状态会发生变化,则只需更改函数以检查并考虑状态更改。
我认为在这种情况下,您应该使用
event.stopImmediatePropagation();
相关文章:
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- 针对重复发生的事件,使用moment.js防止DST偏移
- 如何在事件处理程序的回调中防止Default
- 如果鼠标在元素上快速移动和关闭,则防止.hoop事件被垃圾邮件发送
- 防止在输入字段上单击事件
- 防止默认'F1'iE11中的事件
- 如何防止onclick事件在select选项中触发
- 传单.绘制防止事件发生
- 防止动态创建的onclick事件过早触发
- 当我认为它不应该重新渲染视图时,如何防止 Meteor 在 html 选择 dom 单击事件上重新渲染视图
- 如何防止 jQuery 事件在删除元素时冒泡
- 防止对某些事件进行进一步的动画处理
- 如果类有多个事件处理程序方法,如何防止多个事件执行
- Meteor模板数据对象可防止javascript事件触发
- 通过防止窗口事件问题防止双重提交
- 添加事件以防止Inappbrowser内超时
- SAPUI5 事件总线:防止堆叠相同的订阅
- 图表拦截触摸事件并防止在 c3 js 中滚动
- 如何在触发 ondblClickRow 事件时防止 onSelectRow 事件
- DOM Level 0事件:如何防止外部点击触发