2013-02-13 159 views
0

我有一個多層導航由3個<ul>彼此嵌套(顯然是一個菜單隱藏子菜單點擊顯示)。Jquery:子菜單出現與懸停功能,但不是點擊功能

我創建了一個腳本來顯示第二級<ul> s,如果其中一個被點擊。這工作得很好:

//CLICK MAIN NAV SHOW 2nd LAYER NAV 
$("#ctamenu ul li").not("#ctamenu ul li ul li, .thirdsub").click(function() { 
    $(this).children('ul').stop().delay(200).slideDown(300); 
});//END CLICK FUNCTION 

但是,當我重複此爲第三級<ul>的IT工作不正常:

$("#ctamenu ul li ul li").click(function() { 
    $(this).find('.thirdsub').stop().show(300); 
    }); 

奇怪的是,當我檢查的元素在瀏覽器中display: none css肯定是從第三個子元素中刪除的。我甚至會在Chrome中向我顯示元素應該在的位置上顯示一個彩色輪廓。

什麼甚至離奇的是,如果我改變。點擊到.hover它工作正常:

$("#ctamenu ul li ul li").hover(
    function() { 
    $(this).find('.thirdsub').stop().show(300); 
    }, 
    function() { 
    $(this).find('.thirdsub').stop().hide(300); 
    } 
); 

會有人知道爲什麼這可能是與懸停在工作,但不能點擊?

+1

u better show ||檢查你的css和html設置。附:演示將是巧妙的 – Yevgen 2013-02-13 07:36:45

+0

你有一個例子來看看?可能是由不同的事情引起的,是將'visibility'設置爲'hidden'還是以'z-index'定位? – Paul 2013-02-13 07:37:07

回答

1
$("#ctamenu ul li ul li").click(function (e) { 
    $(this).find('.thirdsub').stop().show(300); 
    e.stopPropagation(); 
    }); 

嘗試stopPropagation(),因爲你還指派click處理程序的該父。當你點擊#ctamenu ul li ul li時,也會調用它。