如何让touchmove之后不触发touchend的事件

手机扫码看效果

不多说,直接上代码

<ul id="Ul">
    <li>111</li>
    <li>222</li>
    <li>333</li>
    <li>444</li>
    <li>555</li>
    <li>666</li>
    <li>777</li>
    <li>888</li>
    <li>999</li>
    <li>000</li>
    <li>aaa</li>
    <li>bbb</li>
    <li>ccc</li>
    <li>ddd</li>
    <li>eee</li>
    <li>fff</li>
    <li>ggg</li>
    <li>hhh</li>
    <li>iii</li>
    <li>jjj</li>
    <li>kkk</li>
    <li>lll</li>
    <li>mmm</li>
    <li>nnn</li>
    <li>ooo</li>
    <li>ppp</li>
    <li>qqq</li>
</ul>
*{
    margin: 0;
    padding: 0;
    border: 0;
}
ul{
    list-style: none;
}
li{
    line-height: 2em;
    border-bottom: 1px solid #eee;
    width: 100%;
    text-indent: 2em;
}
var UL = document.getElementById(‘Ul‘);
var moves = true;
function Alert(ev){
    if(moves)
    alert(ev.target.innerHTML)
}
UL.addEventListener(‘touchmove‘,function(){
    moves = false;
    UL.addEventListener(‘touchend‘,function(){
        moves = true;
    })
})
UL.addEventListener(‘touchend‘, Alert)
原理:
1. 设置一个变量moved来标识是否有移动过,初始值为false;
2. 绑定touchend事件,将moved置为true;
3. 绑定touchmove事件,将moved置为false;
4. 在touchmove事件函数中继续绑定touchend事件,再将moved置为true

---恢复内容结束---

时间: 2024-08-13 04:23:55

如何让touchmove之后不触发touchend的事件的相关文章

解决移动端页面滚动后不触发touchend事件

解决移动端页面滚动后不触发touchend事件 问题 在移动端页面进行优化时,一般使用touch事件替代鼠标相关事件.用的较多的是使用touchend事件替代PC端的click和mouseup事件. 可是,touchend事件在页面滚动时有个问题.在滚动完毕后,假设当前触点的位置所指的元素绑定了touchend事件,这时便会触发该元素的touchend事件,造成误操作. 解决方法 解决方法非常easy.就是在页面滚动时停止touchend事件冒泡.这样就能够防止触发touchend事件. 用法

html事件-子元素事件不触发父元素事件

<div class="list-row" onclick="showChatDialog('dy','100000001',true);"> <img class="icon" src="/icon/default.ico" onclick="personData(event,100000001);"> <a class="nickname">dy&

JavaScript触发文档事件和窗口事件

转载请注明出处:http://www.uphtm.com/js/128.html 浏览器窗口本身理解一些事件,包括从当载入页面的时候触发的事件,到当访问者离开页面的时候触发的事件: ·load.当Web浏览器完成下载Web页面文件的全部内容之后(HTML文件本身,加上任何链接图像.Flash电影和外部的CSS和JavaScript文件),load事件触发.Web设计师习惯上会使用这个事件来启动操作Web页面的任何程序.然而,如果有很多的图形或者其他较大的链接文件的话,载入一个Web页面及其所有的

点击子元素事件不触发父元素事件

<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script src="http://cdn.bootcss.com/jquery/2.1.0/jquery.min.js"></script> <style type="text/css">

文本框输入完毕后,点击Enter触发按钮Click事件

文本框输入完毕后,点击Enter触发按钮Click事件 在C#编程中,我们经常碰到一个问题,就是在文本框中输入一些文字后,点击某按钮做一些响应处理.如百度搜索那样的,填写搜索内容,点击百度即可.当然我这里也有相应的情况: 输入文字后,点击按钮触发翻转文字效果. 如果想要用按下Enter代替点击按钮,可以这样写: private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) {

16.调用trigger()方法手动触发指定的事件

trigger()方法可以直接手动触发元素指定的事件,这些事件可以是元素自带事件,也可以是自定义的事件,总之,该事件必须能执行,它的调用格式为: $(selector).trigger(event) 其中event参数为需要手动触发的事件名称. 例如,当页面加载时,手动触发文本输入框的“select”事件,使文本框的默认值处于全部被选中的状态,如下图所示: 在浏览器中显示的效果: 从图中可以看出,由于文本输入框调用trigger()方法触发了“select”事件,因此,当页面加载完成后,文本框中

QTimer太让人失望了,一秒触发一次事件都不准确。。

今天做项目中,我用QTimer来模拟数据生成,在另外的设备上接受.另外设备上有时1秒读不到数据,查询原因很久,终于发现是QTimer的问题. 测试代码如下 有兴趣同学可以自己试试. t = new QTimer(this); t->start(1000); connect(t,SIGNAL(timeout()),this,SLOT(on_showtime())); void qtdemo::on_showtime() { static int pre=-1; QDateTime dt = QDa

visual studio 2013 触发挂起事件

在 VS2013 中调试 winddows phone 或者 win rt 程序的时候,需要手动触发 “挂起” 事件. 如果找不到这个按钮: 1.打开菜单栏中的 “自定义” 对话框: 2.选择调试位置就弹出来了:

form.submit 方法 并不会触发 form.onsubmit 事件

做表单的时候发现一个奇怪的地方,总结下: form.submit 方法 并不会触发 form.onsubmit 事件,看代码: <body> <div class="container"> <form action="http://route.showapi.com/213-1" method="POST"> <input type="text" value="ssss&qu