Cra*_*aig 8 javascript webkit touch-event ios
我正在尝试为基于ios webkit的应用程序实现一个菜单,用户触摸/点击并按住菜单按钮('.menu_item'),子菜单打开500ms后(div.slide_up_sub_menu),用户应该是能够将他们的手指/鼠标滑动到子菜单项并释放.
<li class="menu_item">
ASSET MANAGEMENT
<div class="slide_up_sub_menu hidden_menu">
<ul class="submenu">
<li>Unified Naming Convention</li>
<li>Version Control</li>
</ul>
</div>
</li>
Run Code Online (Sandbox Code Playgroud)
然后,应用程序应该能够检测touchend/mouseup事件发生在哪个子菜单项上.我将touchstart事件绑定到菜单项,等待500ms,然后告诉子菜单显示.当用户释放他们的手指时,touchend事件应该触发关闭子菜单.如果用户已停止触摸子菜单项,则应检测到该子菜单项.当前检测到鼠标事件发生在哪个子菜单项在桌面上的Safari中工作:
$('ul.submenu li').live('mouseup', function(e){
console.log($(e.currentTarget)); //works on the desktop
});
Run Code Online (Sandbox Code Playgroud)
但如果我使用touchend处理程序执行相同的操作,它在ipad上不起作用:
$('ul.submenu li').live('touchend', function(e){
console.log($(e.currentTarget)); //never fires
});
Run Code Online (Sandbox Code Playgroud)
如果我查找每个touchend事件,当我结束对子菜单项的触摸时,我可以获得对父子菜单项的引用:
$(document.body).bind('touchend', function(e) {
console.log($(e.target).html()); //logs ASSET MANAGEMENT
});
Run Code Online (Sandbox Code Playgroud)
但没有引用子菜单项.
有没有人知道为什么没有在子菜单项上触发touchend事件?
谢谢
Ste*_*fan 16
touchend因为touchcancel早些时候解雇而没有开火.如果你想要全触摸平均处理,你需要打电话
e.preventDefault()
Run Code Online (Sandbox Code Playgroud)
在"touchmove"事件的回调中,否则当触摸移动事件发生时,如果浏览器确定这是一个滚动事件,它将触发touchcancel并且从不触发touchend.
如果您不需要使用多点触控数据,您可以在 ipad 上继续使用 mouseup。
| 归档时间: |
|
| 查看次数: |
18515 次 |
| 最近记录: |