0

私のHTMLコードは次のとおりです。

<a href="someTarget.html" class="menuLink">Link</a>

これで、以前のJSコードは次のようになりました。

$(".menuLink").mouseover(function(){
    //code for show() submenu
}


$(".menuLink").mouseout(function(){
    //code for hide() submenu
}

私はこれをiPadでテストしていますが、上記のコードはiPadで正常に機能しました(つまり、最初のタップでホバーイベントが発生し、サブメニューが表示され、次のタップでのみクリックイベントが発生するか、ターゲットリンクに移動します)

何らかの理由で(メインメニューに遅延を追加して)、次のようにコードを更新する必要がありました。

$this.hover(
    function(){ // over
        $this.data("timer", setTimeout(show, 500));
    },
    function(){ // out
        $this.data("timer", setTimeout(hide, 500));
    }
)

したがって、問題は次のとおりです。リンクの最初のタップで、ユーザーはすぐにターゲットURLに移動します(ホバー/クリックのために2回タップする代わりに)

この問題の修正を手伝ってください。

4

2 に答える 2

0

モバイルデバイスはマウスホバーイベントをサポートしておらず、ダブルクリックイベントもサポートしていません

于 2012-06-11T11:13:41.053 に答える
0

jQueryのドキュメントによると、これ$(selector).hover(handlerIn, handlerOut)はを使用するためのショートカットにすぎません$(selector).mouseenter(handlerIn).mouseleave(handlerOut)

これは、オブジェクトにバインドされたmouseover()/イベントがなく、モバイルブラウザが他の2つのイベント(つまり/ )に対して正しく処理しない可能性があることを意味します。mouseout()mouseenter()mouseleave()

コードを次のように置き換えてみてください。

$this.mouseover(function(){ // over
        $this.data("timer", setTimeout(show, 500));
    }).mouseout(function(){ // out
        $this.data("timer", setTimeout(hide, 500));
    }
)

それでうまくいくかどうか教えてください。

于 2012-06-11T10:31:54.963 に答える