我正在为iPad开发一个javascript / html5项目 .
我需要能够在一个没有被添加到 DOM
的元素上捕获touchmove事件,直到 touchstart
事件被触发后(即直到一个人将手指放在屏幕上之后) .
我试过模拟 touchstart
事件并以编程方式触发它...
$( "#container" ).append( element );
element.on( "touchmove", doStuff );
var ev = $.Event( "touchstart" );
element.trigger( ev );
......但这不起作用 . 我能够开始射击的唯一方法是抬起我的手指,然后再次触摸屏幕,触发第二个 touchstart
事件 .
如何在我的手指已经在屏幕上之后添加到 DOM
的元素上捕获 touchmove
事件?
3 回答
总而言之,您似乎想要:
触摸开始
触摸移动
如果这种解释是正确的,那么答案就是处理最初点击的同一元素上的touchmove事件 - 即"body"元素 . 没有必要处理要拖动的元素的touchmove事件(添加的元素) .
必须有很多方法来编写代码 . 这是一个,这可能不是你想要的(主要是在定位数学中),但应该很容易适应:
mousedown / mousemove / mouseup允许桌面测试,可以删除触摸设备使用 .
DEMO
如果你只是需要它来触发一次那么它很容易
http://jsfiddle.net/rx4qdtuj/8/
我在我的ipad模拟器上检查过这个 . 我用追加替换了警报,所以你不会在ipad上不断得到警报 .
如果你想让它不断触发,我能想到的唯一可能的事情就是在创建的元素上伪造touchmove
http://jsfiddle.net/rx4qdtuj/9/
HTML
CSS
移动实际上触发了已创建的div包装器,它与创建的元素位于同一位置
see documentation draggable function
applicate you function
原生javascript