このフィドルで私の解決策を見つけることができます.Androidフォンでテストしましたが、正常に動作します.jquerymobileを使用してvmousemove
イベントを利用します.また、イベントにハンドラーをアタッチtouchmove
して、モバイルデバイスでブラウザビューをスクロールしないようにします.
関連する HTML と JavaScript のビットをここに貼り付けます。
<div id="main" ontouchmove="touchMove(event);">
<span class='catch'>One</span>
<span class='catch'>Two</span>
<span class='catch'>Three</span>
<span class='catch'>Four</span>
<span class='catch'>Five</span>
<span class='catch'>Six</span>
<span class='catch'>Seven</span>
</div>
今JavaScript:
function elem_overlap(jqo, left, top) {
var d = jqo.offset();
return top >= d.top && left >= d.left && left <= (d.left+jqo[0].offsetWidth)
&& top <= (d.top+jqo[0].offsetHeight);
}
/* To prevent WebView from scrolling on swipe, see http://goo.gl/DIZbm */
touchMove = function(event) {
event.preventDefault(); //Prevent scrolling on this element
}
$("#main").bind("vmousemove", function(evt){
$('.catch').each(function(index) {
if ( elem_overlap($(this), evt.pageX, evt.pageY) ) {
$('.catch').not('eq('+index+')').removeClass('green');
if (!$(this).hasClass('green')) {
$(this).addClass('green');
}
}
});
});