1.点击跳转详情页。
2.长按显示遮罩层和删除按钮
3.点击删除按钮,删除此项。
下面会详细介绍我处理此问题时所出现的问题,及处理方法(本文基于jQuery)
首先我对列表添加了长按事件,添加完之后,发现我的长按事件已经可以成功执行了。但是却出现了新的问题:
这个问题好处理,只需添加一个变量,来判断是否为长按事件
这样上面的问题就完美解决了。
接下来就是给遮罩层上的删除按钮添加事件
但是在这里就发现了新的问题
所以就需要一个新的事件来覆盖原本的事件
然后,整个点击跳转,长按显示删除,删除事件,就已经完美解决了。
但是,在移动端查看的时候就会发现正常的滚动事件被preventDefault屏蔽了。
此处有两种解决方式:
1.删除 e.preventDefault()
删除preventDefault有可能会出现其它情况,不过我暂时没发现如果出现其它情况,可使用下面的方法
删除的点击事件也是如此
By : Yimi-shan
<!DOCTYPE HTML><html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
</style>
<script type="text/javascript" src="jquery-1.8.0.min.js"></script>
<script type="text/javascript">
$ (function ()
{
var content = $ ("#dong_tan")
var items = content.find ("ul")
items.each (function (i, dom)
{
dom.ontouchstart = function ()
{
touchStartt (this)
}
})
})
function touchStartt (item)
{
alert (item.innerHTML)
}
</script>
</head>
<body>
<div id="dong_tan">
<ul>
<li>dd1</li>
</ul>
<ul>
<li>dd2</li>
</ul>
<ul>
<li>dd3</li>
</ul>
<ul>
<li>dd4</li>
</ul>
</div>
</body>
</html>
//html5 新增 touch 事件//禁用手机默认的触屏滚动行为
document.addEventListener('touchmove', function(event) {
event.preventDefault()
}, false)
//touchstart事件
function touchSatrtFunc(evt) {
try {
//evt.preventDefault() //阻止触摸时浏览器的缩放、滚动条滚动等
var touch = evt.touches[0] //获取第一个触点
var x = Number(touch.pageX) //页面触点X坐标
var y = Number(touch.pageY) //页面触点Y坐标
//记录触点初始位置
startX = x
startY = y
} catch (e) {
alert('touchSatrtFunc:' + e.message)
}
}
//touchmove事件,这个事件无法获取坐标
function touchMoveFunc(evt) {
try {
//evt.preventDefault() //阻止触摸时浏览器的缩放、滚动条滚动等
var touch = evt.touches[0] //获取第一个触点
var x = Number(touch.pageX) //页面触点X坐标
var y = Number(touch.pageY) //页面触点Y坐标
//document.getElementById("version").innerHTML = "原:"+startY+" "+"现:"+y
//判断滑动方向
if (y - startY > 100) {
swipeDown()
} else if(y - startY < -100){
swipeUp()
}
} catch (e) {
alert('touchMoveFunc:' + e.message)
}
}
//touchend事件
function touchEndFunc(evt) {
try {
//evt.preventDefault() //阻止触摸时浏览器的缩放、滚动条滚动等
} catch (e) {
alert('touchEndFunc:' + e.message)
}
}
//绑定事件
function bindEvent() {
document.addEventListener('touchstart', touchSatrtFunc, false)
document.addEventListener('touchmove', touchMoveFunc, false)
document.addEventListener('touchend', touchEndFunc, false)
}
//判断是否支持触摸事件
function isTouchDevice() {
//document.getElementById("version").innerHTML = navigator.appVersion
try {
document.createEvent("TouchEvent")
//alert("支持TouchEvent事件!")
bindEvent() //绑定事件
} catch (e) {
alert("不支持TouchEvent事件!" + e.message)
}
}