touchend与滚动事件冲突的问题
程序员文章站
2024-01-24 18:31:46
...
问题描述: content
高度固定, 期中有多个p
标签, 致使出现滚动.
需求是点(touchend
)p
标签的时候,做业务处理.
然后问题就出现了:
滚动的时候也会触发touchend
.
代码示意如下:
<div id="content">
<p>内容</p>
<p>内容</p>
<p>内容</p>
...
</div>
<script type="text/javascript">
$(function() {
$('#content').on('touchend', 'p', function(e) {
console.log('touchend', +new Date);
});
});
</script>
效果如下图:
问题就在于如何在touchmove
结束后不触发touchend
.
解决方案(html不变),
在touchmove
时, 设置标志, 然后在touchstart
时清除标志,
然后在touchend
中判断, 如果有标志就不做处理(touchmove
造成的), 否则再做处理:
$(function() {
var isMoving = false;
$('#content').on('touchend', 'p', function(e) {
if (isMoving) {
return;
}
console.log('touchend', +new Date);
})
.on('touchstart', 'p', function(e) {
isMoving = false;
})
.on('touchmove', 'p', function(e) {
isMoving = true;
});
});
效果如下图:
完整测试代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
<title>touchmove scroll test page</title>
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
html, body, #content {
height: 100%;
}
p {
border: 1px solid red;
line-height: 100px;
text-align: center;
}
p:active {
background-color: #ccc;
}
</style>
</head>
<body>
<div id="content">
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
<p>内容</p>
</div>
<script type="text/javascript">
$(function() {
var isMoving = false;
$('#content').on('touchend', 'p', function(e) {
if (isMoving) {
return;
}
console.log('touchend', +new Date);
})
.on('touchstart', 'p', function(e) {
isMoving = false;
})
.on('touchmove', 'p', function(e) {
isMoving = true;
});
});
// $(function() {
// $('#content').on('touchend', 'p', function(e) {
// console.log('touchend', +new Date);
// });
// });
</script>
</body>
</html>
欢迎补充指正!
上一篇: dataframe
推荐阅读
-
touchend与滚动事件冲突的问题
-
layui table表格 表头与内容列错位问题(只有纵向滚动条的情况)
-
详解Android Libgdx中ScrollPane和Actor事件冲突问题的解决办法
-
Android 中ScrollView与ListView冲突问题的解决办法
-
Android 中ScrollView与ListView冲突问题的解决办法
-
Fedora14下android开发: eclipse与ibus确有冲突的问题分析
-
解决自定义$(id)的方法与jquery选择器$冲突的问题
-
JS中双击和单击事件冲突问题的解决办法
-
asp.net开发与web标准的冲突问题的一些常见解决方法
-
Fedora14下android开发: eclipse与ibus确有冲突的问题分析