touchend événement dans webkit ios pas de tir?
Je suis en train de mettre en œuvre un menu pour ios basé sur webkit application dans laquelle l'utilisateur touche/clics et titulaire d'un bouton de menu ('.menu_item'), après 500ms le sous-menu s'ouvre, (div.slide_up_sub_menu), et un utilisateur doit être en mesure de faire glisser le doigt/souris jusqu'à un sous-menu li élément et de la libération.
<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>
L'application doit être capable de détecter quel élément de sous-menu de la touchend/événement mouseup qui s'est passé. Je suis une liaison évènements touchstart événement à l'élément de menu, en attente de 500ms, et ensuite dire le sous-menu afficher. Lorsqu'un utilisateur relâche le doigt d'un touchend événement devrait incendie de clôture du sous-menu. Si l'utilisateur a cessé de toucher sur un élément de sous-menu, il doit être détecté. Actuellement, la détection de l'élément de sous-menu qui un événement mouseup qui s'est passé sur les œuvres dans Safari sur le bureau:
$('ul.submenu li').live('mouseup', function(e){
console.log($(e.currentTarget)); //works on the desktop
});
mais si je fais la même chose à l'aide d'un touchend gestionnaire il ne fonctionne pas sur un ipad:
$('ul.submenu li').live('touchend', function(e){
console.log($(e.currentTarget)); //never fires
});
si je regarde pour chaque touchend cas je peux obtenir une référence à la société mère sous l'élément de menu lorsque j'arrive à la fin du tactile sur un élément de sous-menu:
$(document.body).bind('touchend', function(e) {
console.log($(e.target).html()); //logs ASSET MANAGEMENT
});
mais pas de référence à l'élément de sous-menu.
Quelqu'un a une idée de pourquoi un touchend événement n'est pas déclenché sur les éléments de sous-menu?
Grâce
OriginalL'auteur Craig | 2011-10-07
Vous devez vous connecter pour publier un commentaire.
touchend ne se déclenche pas car touchcancel a tiré plus tôt. Si vous souhaitez toucher evens manipulation vous devez appeler
dans le rappel de "touchmove" de l'événement, autrement lorsqu'un touchmove événement se produit si le navigateur décide que c'est un événement scroll, cela va déclencher touchcancel et de ne jamais le feu touchend.
OriginalL'auteur Stefan
C'est peut-être un peu en retard pour répondre.
Cet événement se déclenche jamais, parce que les événements tactiles feu sur le même élément sur lequel évènements touchstart qui s'est passé. Alors, à faire ce que vous voulez, une solution est d'utiliser document.elementFromPoint méthode, pour vous donner des coordonnées x et y.
OriginalL'auteur user1368691
Si vous n'avez pas besoin d'utiliser le multitouch de données, vous pouvez continuer à utiliser mouseup sur ipad.
davantage de lecture:
http://developer.apple.com/library/IOS/#documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html
OriginalL'auteur roee