evento touchend en ios webkit no disparando?

Estoy tratando de implementar un menu para una aplicación ios basada en webkit en la que el usuario toca / hace clic y mantiene un button de menu ('.menu_item'), después de 500ms se abre el sub menu (div.slide_up_sub_menu), y un usuario debe estar capaz de deslizar su dedo / mouse hasta un elemento del submenu li y soltarlo.

<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> 

La aplicación debería poder detectar en qué submenu se activó el evento touchend / mouseup. Estoy vinculando un evento de inicio con una tecla al elemento del menu, esperando 500 ms, y luego diciendo al submenu que se muestre. Cuando un usuario suelta su dedo, un evento touchend debe iniciarse cerrando el submenu. Si el usuario ha detenido su toque en un elemento del submenu, debe ser detectado. Actualmente, la detección del elemento de submenu en el que ocurrió un evento mouseup funciona en Safari en el escritorio:

 $('ul.submenu li').live('mouseup', function(e){ console.log($(e.currentTarget)); //works on the desktop }); 

pero si hago lo mismo usando un controller touchend, no funciona en un ipad:

 $('ul.submenu li').live('touchend', function(e){ console.log($(e.currentTarget)); //never fires }); 

si busco cada evento touchend puedo get una reference al elemento del submenu principal cuando termino el toque en un elemento del submenu:

 $(document.body).bind('touchend', function(e) { console.log($(e.target).html()); //logs ASSET MANAGEMENT }); 

pero no hay reference al elemento del submenu.

¿Alguien tiene alguna idea de por qué un evento touchend no se activa en los elementos del submenu?

Gracias

touchend no se activa porque touchcancel se ha activado anteriormente. Si desea un manejo táctil completo, necesita llamar

 e.preventDefault() 

en la callback del evento "touchmove"; de lo contrario, cuando ocurre un evento de movimiento táctil si el browser decide que se trata de un evento de desplazamiento, activará touchcancel y nunca activará touchend.

Tal vez es un poco tarde para responder. Este evento nunca se disparará, porque los events táctiles se activan en el mismo elemento en el que se activó el inicio táctil. Por lo tanto, para hacer lo que quiera, una solución es utilizar el método document.elementFromPoint, al que enviará las coorderadas xey adecuadas.

Si no necesita usar datos multitouch, puede seguir usando mouseup en ipad.

Lectura adicional: http://developer.apple.com/library/IOS/#documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html