2016-05-26 4 views
1

ユーザーが何か他のものをタップしたことを検出するためにグローバルイベントハンドラを使用するよりも、タッチデバイス上の「ホバー」(このタップされ、次に何かがタップされるまで有効になる)イベントを処理するより良い方法はありますか?例えばタッチデバイスで「ホバー」イベントを処理するより良い方法はありますか?


、このコードはうまくいくかもしれないが、それは、文書の本体に取り付けられたイベントリスナーに依存しているので、それは疑わしいパフォーマンスが賢明です。

//note a namespace is used on the event to clear it without clearing all event listeners 
$('myDiv').on('touchstart.temp', function() { 
    //do stuff 
    $('body').not(this).on('touchstart.temp', function() { 
     //undo stuff 
     $('body').not(this).off('touchstart.temp'); 
    }); 
}); 

答えて

1

今後、特定の要素に適用されるtouchenterイベントとtouchleaveイベントを使用することができます。

$("myDiv").on("touchenter mouseover", function() { 
    // do hover start code 
}).on("touchleave mouseleave", function() { 
    // do hover end code 
}); 

しかしMDNによると、これはまだ実装されていないだけの提案です。

jQuery Mobileを使用している場合は、モバイルデバイス上のマウスイベントをシミュレートするvmouseoverイベントとvmouseleaveイベントを使用できます。

0

Javascript onmouseoverイベントとonmouseoutイベントは正常に機能します。 :)

モバイルデバイスでは動作しませんが、私はあなたがそれを予想していると思います。

編集:JQueryタグが含まれていることに気付きました。あなたが好きな場合は、JQueryのホバー方法を使用することもできます。

すなわち

$('div').hover(function(){ 
    $(this).css('background-color', 'red'); 
    }, function(){ 
    $(this).css('background-color', 'blue'); 
}); 

例:すべてのタッチデバイス上でホバリングとしてhttps://jsfiddle.net/sofdz0s2/

、それはすべてのタッチデバイス間で一定ではありません。私はタップの後でホバリングを続けません。 (私は緑のdivの上に、その後変化し、divの上でタップしてみましたが、それはタップした後、ホバリングまま。)

編集2:

としては、コメント、するTouchEnterでの話をしてするTouchLeaveあり、おそらく何を欲しいです。

こちらがお役に立てば幸いです。

+0

いいえ私はモバイル、すべてのタッチデバイスで動作する必要があります、それは問題です。 –

+0

@Viziionary jQuery-Mobileを試しましたか? – Barmar

+0

@Barmarすべき?私はバニラJSで物事をする方法を少なくとも知っています。 –

関連する問題