Javascript ios webkit中的touchend事件未触发?

Javascript ios webkit中的touchend事件未触发?,javascript,ios,webkit,touch-event,Javascript,Ios,Webkit,Touch Event,我正在尝试为基于ios webkit的应用程序实现一个菜单,在该应用程序中,用户触摸/单击并按住菜单按钮(“.menu_item”),500毫秒后子菜单打开(div.slide_up_sub_menu),用户应该能够将手指/鼠标向上滑动到子菜单项并释放 <li class="menu_item"> ASSET MANAGEMENT <div class="slide_up_sub_menu hidden_menu">

我正在尝试为基于ios webkit的应用程序实现一个菜单,在该应用程序中,用户触摸/单击并按住菜单按钮(“.menu_item”),500毫秒后子菜单打开(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>
但是,如果我使用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事件吗


谢谢

如果您不需要使用多点触控数据,您可以继续在ipad上使用鼠标

进一步阅读:
也许现在回答有点晚了。
此事件永远不会触发,因为touch事件在发生touchstart的元素上触发。因此,要执行您想要的操作,一种解决方案是使用document.elementFromPoint方法,您将向该方法发送适当的x和y坐标。

touchend不会触发,因为touchcancel之前已触发。如果你想完全接触,甚至处理你需要打电话

e.preventDefault()
在“touchmove”事件的回调中,否则当发生touchmove事件时,如果浏览器确定这是一个滚动事件,它将触发touchcancel,而不会触发touchend。

对于“touchmove”事件

如果您不想在touchmove上执行任何操作:

return false;
e.preventDefault();
如果您希望阻止默认行为,但在touchmove上执行一些代码:

return false;
e.preventDefault();

这个问题在iPad上更为明显。

感谢roee的回答,不幸的是,当你触摸屏幕时,鼠标下移事件不会立即触发。它只有在你的手指与mouseup事件同时离开屏幕后才会触发。