0

我被要求在工作中修补一个写得很糟糕的响应式网站,并且被 jQuery click 事件的问题难住了。

该事件在 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 文件解决了这个问题。我发现这个选择器上有多个相互矛盾的点击处理程序实例。我删除了其他人并bam,它起作用了。

它甚至以我最初打算让它使用基本的方式工作

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

事件处理程序。

于 2012-09-03T14:05:52.553 回答
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 回答
0

您的代码以if (width <= 480) {. 这看起来可以是有效的纵向但不是横向,这就是问题所在。

于 2012-08-31T14:33:49.007 回答