0

仕事でかなりひどく書かれたレスポンシブウェブサイトにパッチを当てるように頼まれました、そして、jQueryクリックイベントの問題によって困惑したままにされました。

このイベントは、横向きモードのiPhoneでは正常に機能しますが、縦向きモードでは何もしません。

jQueryは次のとおりです。

if (width <= 480) {
    function menu(e) {
        e.PreventDefault();
        $('#menu-item-93 .sub-menu').slideToggle('fast');
    }

    $('.nav-cont').addEventListener('click', menu(e));
    $('.nav-cont').addEventListener('touchstart', menu(e));
}

そして、header.phpファイルから関連するセクション(私が言及したのは、これはWordpressサイトです)

<nav id="main" class="main clearboth">
    <?php 
        wp_nav_menu( array( 
            'sort_column' => 'menu_order', 
            'theme_location' => 'primary', 
            'after'=>'<img src="'.template_url('images/button/link-445x68.png').'" class="show-480" />'
        ) );
    ?>
</nav>
<div class="nav-cont">
    <div class="nav-text show-480">NAVIGATION</div>
    <img class="nav-button show-480" src="<?php echo template_url('images/button/navigation-closed-nt-445x52.png');?>" />
</div>

このタッチイベントがランドスケープモードでのみ発生する理由を誰かが知っていますか?

4

3 に答える 3

1

これは、サイトで作業していた古い開発機関が残した複数のjavascriptファイルを調べることで最終的に解決されました。このセレクターには、互いに矛盾するクリックハンドラーのインスタンスが複数あることがわかりました。私は他の人とバムを削除しました、それはうまくいきました。

それは私が最初にそれが基本的なもので動作することを意図した方法でさえ動作しました

$('.nav-cont').click(function() {
});

イベントハンドラ。

于 2012-09-03T14:05:52.553 に答える
0

コードは。で始まりますif (width <= 480) {。これは、有効なポートレートである可能性がありますが、ランドスケープではないように見えるため、問題が発生します。

于 2012-08-31T14:33:49.007 に答える
0

これらの行:

$('.nav-cont').addEventListener('click', menu(e));
$('.nav-cont').addEventListener('touchstart', menu(e));

する必要があります:

$('.nav-cont').addEventListener('click', menu);
$('.nav-cont').addEventListener('touchstart', menu);

あるいは:

$('.nav-cont').on('click', menu);
$('.nav-cont').on('touchstart', menu);

現在のコードは、関数を呼び出した結果をmenuイベントハンドラーに追加します。

于 2012-08-31T14:39:03.077 に答える