4

スマートフォンのハイブリッドアプリケーションを開発しています。

/で非表示/表示しようとしてい<div>ます。slideDownslideUp

ボタンをクリック<div>すると、コンテキストに応じてメニューが表示/非表示になるはずです。私のコンピューターではすべてがうまく機能していますが、私のモバイルではまったく機能しません。何も起こりません。

これが私のHTMLコードです

<a class="btnMenuDyn" data-role="button">Masquer le menu</a>

そしてここに私のjQueryモバイルコード:

$(document).bind('pageinit', function(e){


// définition des variables
var btnMenuDyn = $('a.btnMenuDyn'),
    menuDyn = $('div.menuDyn');

$(btnMenuDyn).bind('click', function(){


    // condition pour afficher ou non le menu
    if ($(menuDyn).hasClass("menuDynHide"))
    {
        $(menuDyn).slideDown().removeClass("menuDynHide");
    }
    else{
        $(menuDyn).slideUp().addClass("menuDynHide");
    }

});
});
4

2 に答える 2

6

この問題は、モバイルがタッチスタートとタッチエンドを使用するクリックをサポートしていないため、コンピュータでテストしたい場合は動きを追跡できることです。

$(btnMenuDyn).bind('touchstart mousedown', function(event){
    event.preventDefault();
    if ($(menuDyn).hasClass("menuDynHide"))
    {
        $(menuDyn).slideDown().removeClass("menuDynHide");
    }
    else{
        $(menuDyn).slideUp().addClass("menuDynHide");
    }

});

ブラウザで同じ答えのjquerytouchstartを使用した別の質問

詳細については、 http: //backtothecode.blogspot.com/2009/10/javascript-touch-and-gesture-events.htmlをご覧ください。

于 2012-07-04T16:34:22.027 に答える
1

on()代わりに使用することをお勧めしますbind()

そして、あなたがこれをしているので:

var btnMenuDyn = $('a.btnMenuDyn')

btnMenuDynはjquerydom要素なので、次のように変更します。

if ($(menuDyn).hasClass("menuDynHide"))

これに

if (menuDyn.hasClass("menuDynHide"))

そして、できれば次のようにjquerydom要素を宣言します。

var $btnMenuDyn = $('a.btnMenuDyn')
于 2012-07-04T16:22:20.693 に答える