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