我正在尝试为基于ios webkit的应用程序实现菜单,用户触摸/点击并按住菜单按钮('.menu_item'),500毫秒后子菜单(div.slide_up_sub_menu)打开,用户应该能够滑动手指/鼠标到子菜单li项并释放。
<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>
应用程序应该能够检测到触摸结束/鼠标松开事件发生在哪个子菜单项上。我将一个 touchstart 事件绑定到菜单项,等待500毫秒,然后告诉子菜单显示。当用户松开手指时,应该会触发 touchend 事件并关闭子菜单。如果用户停止在子菜单项上触摸,则应该检测到。目前,在桌面版的 Safari 上,可以检测到 mouseup 事件发生在哪个子菜单项上。
$('ul.submenu li').live('mouseup', function(e){
console.log($(e.currentTarget)); //works on the desktop
});
但如果我使用touchend处理程序进行相同的操作,在iPad上无法正常工作:
$('ul.submenu li').live('touchend', function(e){
console.log($(e.currentTarget)); //never fires
});
如果我查找每个touchend事件,当我在子菜单项上结束触摸时,我可以获得对父级子菜单项的引用:
$(document.body).bind('touchend', function(e) {
console.log($(e.target).html()); //logs ASSET MANAGEMENT
});
但是没有提及子菜单项。
有人知道为什么在子菜单项上没有触发touchend事件吗?
谢谢。