2016-05-09 78 views
-1

我有一個小功能,我寫了一個隱藏子菜單的wordpress網站上使用FoundationPress作爲模板,不幸的是我發現,無法在Chrome PC或FF上運行。我最初使用切換隱藏它,但切換到.hide(),然後甚至將其設置爲.css(「顯示」,「無」),但問題仍然存在於PC端。jQuery隱藏只適用於Chrome Mac和IE,不適用Chrome PC或FF

$(document).ready(function() { 
    $('.top-bar-section li.active:not(.has-form) a:not(.button)').click(function() { 
     $("li.active ul.sub-menu.dropdown").hide(); 
    }); 
    $('.top-bar-section ul li').hover(function() { 
     if($("li.active ul.sub-menu.dropdown").css("display", "none")){ 
      $("li.active ul.sub-menu.dropdown").css("display", "block"); 
     } 
    }); 
}) 

應該發生什麼是用戶瀏覽該網站的一個部分,然後使用菜單頂部跳下到每個部分。所以在這裏:http://development.maclynutility.com/littlefriends/childrens-services/ 如果您使用菜單在當前部分(兒童服務)內的任何位置進行導航,則菜單在使用Chrome或FF的PC上保持活動狀態,但隱藏在Mac或IE上。我需要它隱藏所有的時間,並像在IE或Mac Chrome上那樣工作。謝謝你的幫助。

+1

我會檢查的第一件事情是如果$(「li.active ul.sub-menu.dropdown」)實際上發現任何東西 –

+0

看起來問題是使用懸停功能,而不是click功能中的選擇器。當我註釋掉第二個懸停功能時,該子菜單正確隱藏,但如果用戶返回該功能,我將使用該菜單再次顯示菜單。 我可以看到,一旦頁面加載顯示屬性切換回到塊沒有像它應該的,但在Mac上它保持隱藏,並實際顯示在PC上,儘管該屬性被設置爲阻止。 .hover()是否適合在那裏使用? – Brent

回答

0

它不工作,因爲它是不是能夠找到

li.active ul.sub-menu.dropdown 

確保您靶向什麼。

+0

我很好奇它爲什麼在某些瀏覽器上運行,而不是其他瀏覽器。原諒我,但這是我第一次遇到這樣的問題。當它在控制檯中似乎沒有實際顯示錯誤時,如何檢查這樣的事情?雖然我可能沒有在正確的位置上看。 – Brent

+0

您需要檢查不同瀏覽器中的不同計算樣式。 –

+0

會做,謝謝。 – Brent

0
if($("li.active ul.sub-menu.dropdown").css("display", "none")){ 
    $("li.active ul.sub-menu.dropdown").css("display", "block"); 
} 

應該是:

if($("li.active ul.sub-menu.dropdown").css("display") === "none"){ 
    $("li.active ul.sub-menu.dropdown").css("display", "block"); 
} 

因爲將總是隱藏並返回選定的DOM元素,它們是「truthy」,因此,如果主體將被執行,顯示下拉菜單。

但是,既然它會顯示,如果它被隱藏,或者如果顯示它什麼也不做,那麼該函數基本上不會做任何事情,比如果你完全省略了if語句。你打算讓它切換嗎?或者可能在徘徊時顯示,但之後隱藏?

+0

其中的意圖是顯示其上的懸停後的下拉菜單,它被第一個函數隱藏,這就是爲什麼我將if語句放在由活動菜單類觸發的懸停中的原因。 問題在於,它在Chrome上顯示不一致,即使顯示設置爲阻止其不顯示在Mac或IE上。 – Brent

+0

何時將「活動」類添加到li?在懸停函數中,可以使用$(this)來獲取包含li的jQuery對象。所以也許你正在尋找$(this).find(「ul.sub-menu.dropdown」)。show(); –

+0

這是可能的,但我似乎無法得到那個工作,不管我做什麼。我迷失了爲什麼即使我沒有在任何東西上盤旋,hove函數也會抵消點擊功能。 – Brent

相關問題