2016-12-06 62 views
1

我已經將我的第一個HTML轉換爲WordPress網站,並有一個響應子菜單,它不能在手機上正常打開,因爲顯然沒有懸停功能。由於我的JavaScript知識並不存在,因此我查找了解決方案並且一無所獲,因此,從這裏的示例複製和粘貼代碼並沒有讓我獲得我想要實現的結果。響應子菜單打開點擊不工作

我試圖修復菜單是通過以下網站:

https://www.piogroup.in/wordpress/

我有2名家長分別是「約」和「產品」,他們不是可點擊的鏈接。到目前爲止,我已經嘗試下面的代碼:

$(document).ready(function(){ 
$("#menu-item-74").off("click").on("click", function() { 
    $(".sub-menu").fadeToggle("slow"); 
}); 
}) 

$(document).ready(function(){ 
$("#menu-item-72").off("click").on("click", function() { 
    $(".sub-menu").fadeToggle("slow"); 
}); 
}) 

,然後添加這個問題,以及:

var $handle = $('.sub-menu').prev(); 

var opened = 0; 
$handle.on('click', function(e){ 

    if (opened) { 
window.location.href = $(this).attr('href'); 
    } else { 
e.preventDefault(); 
e.stopPropagation(); 
$('.sub-menu').slideToggle(); 
opened = 1; 
} 
}); 

$('html').on('click', function(){ 
    if (opened) { 
$('.sub-menu').slideToggle(); 
opened = 0; 
} 
    }); 

我不知道如果我的意思忍受任何其他文件,但可以這樣做。

+1

通過http://stackoverflow.com/help/mcve閱讀,關於你所需要的提供您的JavaScript,但我失蹤一些html代碼。 Withouth HTML代碼我無法重現您的問題。一個好的提示(許多人會要求)是創建一個https://jsfiddle.net/。在其中,您可以提供html和javascript代碼,但要確保它儘可能少,但仍會重新創建您的問題。否則,這是一個很好的問題。 – Cleared

+0

'.off(「click」)'可能會產生錯誤或未定義。 – Thevs

回答

0

@R Alexander如果我理解正確,您的子菜單不適用於移動設備。下面的代碼可能會幫助你。

minWidth = $(window).width(); 

if(winWidth < 768){ 
$(".menu-main-menu-container li").click(function(){ 
    $(".menu-main-menu-container li ul").slideToggle(); 
    $(".menu-main-menu-container li ul").parent().siblings().children(".menu-main-menu-container li ul").slideUp(); 
}); 
} 
0

我經歷了您的代碼,並且存在一些邏輯不一致性。

首先,你應該改變這種如下:

var $handle = $('.sub-menu').prev(); 

var opened = 0; 
$handle.on('click', function(e) { 

    if (opened) { 
    window.location.href = $(this).attr('href'); 
    } else { 
    e.preventDefault(); 
    e.stopPropagation(); 
    $(this).next().slideToggle(); 
    opened = 1; 
    } 
}); 

這使得特定點擊的元素來代替slideToggle所有.sub-menu元素。

然後效仿下拉菜單收盤使用:

$('html').on('click', function() { 
    if (opened) { 
    $('.sub-menu').slideUp(); 
    opened = 0; 
    } 
});