2013-02-13 117 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时,也会调用它。