2011-10-18 1 views
0

#menu-buttonをクリックすると、#wrap-footerというメニューが表示されます。メニュー以外のページをクリックすると、スライドが元に戻ります。iPhoneでjqueryトグルクラスのバグ

メニューが表示されているときは、#menu-buttonに「menu-open」(スタイリング用)というクラスが追加されています。メニューが再び非表示になると、クラスは削除されます。 iPhoneはこれらを認識しないよう

注、私は、セレクタ#wrap-header#wrap-pre-footer#wrap-contentだけではなくhtmldocumentを使用していました。

$(document).ready(function(){ 
    $("#menu-button a").hide(); 
    $('#menu-button').append('Menu'); 

    $('#wrap-header,#wrap-pre-footer,#wrap-content').click(function() { 
     $('#wrap-footer').slideUp('slow'); 
     $('#menu-button').removeClass('menu-open'); 
    }); 

    $('#menu-button').click(function(event){ 
     event.stopPropagation(); 
     $('#menu-button').toggleClass('menu-open'); 
     $('#wrap-footer').slideToggle('slow'); 
    }); 

    $("#wrap-footer").click(function(e) { 
     e.stopPropagation(); 
    }); 
}); 

デスクトップブラウザではすべて問題ありません。しかし、iPhoneではslideToggleは正常に動作しますが、toggleClassはクラスを削除しません。したがって、メニューが開いている場合は、#menu-buttonまたは#wrap-footerではなく、メニューを最小化してクラスを削除しますが、#menu-buttonをクリックするとメニューが最小化され、クラスは削除されません。

ありがとうございました

答えて

5

jsはうまくいきました。本当の問題は、CSSのホバークラスでした。 iPhone上でクリックする最後の要素は、ホバー状態として存続します。 css hoverクラスを削除すると(モバイルサイトのバージョンでは不要)、これが修正されました。

関連する問題