繁体   English   中英

jQuery Click Event仅适用于风景(iPhone)

[英]jQuery Click Event only works in Landscape (iPhone)

我被要求在工作中修补一个写得很差的响应式网站,而被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>

有人知道为什么此触摸事件仅在横向模式下触发吗?

您的代码以if (width <= 480) { 看起来它可以是有效的肖像,但不能在风景中使用,这就是问题所在。

这些行:

$('.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函数的结果添加到事件处理程序中。

最后,通过浏览该网站上旧开发机构留下的多个javascript文件,解决了该问题。 我发现此选择器上有多个单击处理程序实例,它们相互矛盾。 我删除了其他人,ba,它起作用了。

它甚至以我最初打算与基本版本一起工作的方式工作

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

事件处理程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM