[英]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.