Estoy intentando implementar un menú para una aplicación ios basada en webkit en la que el usuario toca/hace clic y mantiene un botón de menú ('.menu_item'), después de 500ms se abre el submenú (div.slide_up_sub_menu) y un usuario debería poder deslizar su dedo/mouse hasta un elemento del submenú li y soltarlo.evento touchend en ios webkit no está activando?
<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 ser capaz de detectar en qué submenú se activó el evento touchend/mouseup. Estoy vinculando un evento de inicio táctil con el elemento del menú, esperando 500 ms, y luego diciendo al submenú que se muestre. Cuando un usuario suelta su dedo, un evento touchend debe iniciarse cerrando el submenú. Si el usuario ha detenido su toque en un elemento del submenú, debe ser detectado. Actualmente la detección de qué elemento de submenú mouseup un evento ocurrido en las obras en Safari en el escritorio:
$('ul.submenu li').live('mouseup', function(e){
console.log($(e.currentTarget)); //works on the desktop
});
pero si lo hago la misma utilizando un controlador touchend no funciona en un iPad:
$('ul.submenu li').live('touchend', function(e){
console.log($(e.currentTarget)); //never fires
});
si miro para cada evento touchend puedo obtener una referencia al elemento de submenú padres cuando termino el toque en un elemento de submenú:
$(document.body).bind('touchend', function(e) {
console.log($(e.target).html()); //logs ASSET MANAGEMENT
});
pero ninguna referencia al elemento de submenú.
¿Alguien tiene alguna idea de por qué un evento touchend no se activa en los elementos del submenú?
Gracias
Gracias por la respuesta, desafortunadamente, el evento de mousedown no se dispara inmediatamente cuando toca la pantalla. Dispara solo después de que su dedo sale de la pantalla en tándem con el evento mouseup. http://www.quirksmode.org/blog/archives/2008/08/iphone_events.html – Craig