2013-02-12 5 views
6

Kann mir jemand sagen, warum das Touchenter Event in diesem Code nicht funktioniert. Das mouseenter funktioniert auf einem Desktop einwandfrei. Sollte so einfach sein, aber ich vermisse etwas. hiertouchenter Event wird nicht aufgerufen

Beispiel - http://jsfiddle.net/gCEqH/6/

Voll Code unten:

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    </head> 

    <body> 
     <img id="myImg" src="http://jackiehutchings.com/wp-content/uploads/2011/09/g-plus-icon-96x96.png" />   

     <script> 
      $(window).load(function() { 
      $('#myImg').on("touchenter mouseenter", function(event){ 
       alert('entered!'); 
      }); 
     }); 
     </script> 
    </body> 
</html> 
+0

Sind Sie sicher, es funktioniert für mich auf Windows Phone? Welcher Browser? – enginefree

+0

Funktioniert nicht auf Android-Telefon oder iPad. Am Telefon habe ich sowohl den Standard-Browser als auch Opera ausprobiert. – Justin

+0

funktioniert es gut für mich in ipad. Es funktioniert gut, wenn Sie darauf sind. Suchst du nach Hover in Kontakt? – karthik

Antwort

0

Vielleicht wie etwas das funktionieren würde?

var elementIdTouching = ""; 
$('body').on("touchmove", function(e){ 
    var tList = e.touches; // get list of all touches 
    for (var i = 0; i < tList.length; i++) { 
     var thisTouch = tList[i]; // not 100% sure about this 
     var elementTouching = document.elementFromPoint( 
      thisTouch.screenX, 
      thisTouch.screenY 
     ); 
     if (elementTouching.id != elementIdTouching) { 
      elementIdTouching = elementTouching.id; 
      if (elementTouching.id == "myImg") { 
       alert("entered!"); 
      } 
     } 
    } 
}).on("touchend", function(e){ 
    elementIdTouching = ""; 
}); 
$('#myImg').on("mouseenter", function(e){ 
    alert('entered!'); 
}); 

TLIST ~ https://developer.mozilla.org/en-US/docs/Web/API/TouchList

Haftungsausschluss: Ich kann das nicht getestet haben.

+0

Dieser Ansatz funktioniert, ist aber sehr langsam. Ich habe mir allerdings einen Workaround ausgedacht. (siehe meine Kommentare oben). – Justin

+0

Laut "quirksmode" wäre 'clientX' und' clientY' eine bessere Wahl als 'screenX' und' screenY': http://www.quirksmode.org/dom/w3c_cssom.html#t20 – Webthusiast