防止在列表视图上出现更多的点击事件(一旦点击)
Prevent more tap events on a listview (once tapped)
我有一个列表视图中的项目列表。点击一个li发送一个JSON请求并打开一个描述页面。
由于打开描述页需要1或2秒,因此有时间点击列表中的另一个项目,然后触发更多事件,这是我不想要的。这最终会使滚动(使用iscrollview)变得混乱,当返回列表时,底部栏会上下移动。
在处理打开描述页面时,如何停止收听列表视图上的更多点击?
没有任何可看的,我们很难帮助你。
然而,避免这种情况的最简单方法是使用全局变量作为标志。你会设置全局变量(即:在你的JavaSCript文件的根级)为false:
tapProcessing = false;
然后,无论何时开始处理你,检查这个标志,如果不为真,则处理。
这里有一个基本的例子来告诉你我的意思:
$('.selector').click(function(e){
if(!tapProcessing){
//the function is not processing, therefore set the flag to true:
tapProcessing = true;
//do your load/etc, and reset the flag to false in the callback (when finished):
$.get("test.php", function(data) {
// process your data here
// set your flag back to false:
tapProcessing = false;
});
}else{
//the function is already being processed from a previous click
}
e.preventDefault(); //assuming it's a link
});
下面是我添加的代码:
el是我的列表,event是登陆页将tapProcessing设置为false应该只在"changePage()请求完成将页面加载到DOM并且所有页面过渡动画都完成之后"(JQM文档:http://jquerymobile.com/demos/1.2.0/docs/api/events.html)
$('#el').click(function(e){
if(tapProcessing) {
alert('prevent');
e.preventDefault(); //assuming it's a link
} else {
alert('oktap');
tapProcessing = true;
}
});
$(document).bind("pagechange", function(event, options) {
if(options['toPage']['selector'] == '#event') {
tapProcessing = false;
}
});
我还设置tapProcessing为false,如果我收到断开连接事件或超时。
相关文章:
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 如何刷新列表框内容onclick或blur事件
- 如何在HTML列表中添加事件's子弹
- 当触发下拉列表的onchange事件时,使用JavaScript提交表单
- 将事件列表滚动到给定月份的第一个事件
- 对象 Javascript 中的标签无效 - 想要添加事件列表器
- SVG-全局属性和事件的列表
- 如何从加载的JSON文件构建外部事件列表
- 有没有一种方法可以在没有jQuery的情况下获得JavaScript中当前添加到后台的事件列表
- 通过更改HTML元素上的动态类名来处理事件列表器
- 事件列表器不适用于追加的项目
- 使用 JQuery 将事件列表器添加到动态添加的元素
- 谷歌日历事件列表jQuery格式
- 将事件列表器添加到多个图像
- 动态加载图像并附加加载事件列表器
- 从谷歌日历 API 中的事件列表中检索实例
- 如何在类上设置实时事件列表器,以自动调整其高度并调整其内容的大小
- 在DOM中触发的事件列表
- Jquery点击事件列表上的锚
- Javascript移动事件列表