2012-02-25 44 views
-1

我有一个小工具栏,我希望其中一个项目在导航栏中点击时打开一个下拉菜单。我有这样的:为什么我的滑动切换不工作?

$("#dropdown_menuitem").click(function() { 
    $(this).find('ul').slideToggle('slow'); 
}); 

但是在下拉菜单中从不点击的出现,我的HTML看起来像这样:

<li id="dropdown_menuitem"><a href="#">MyAxon<img style="padding-left:5px;" src="img/drop-down.png"/></a> 
    <ul class="dropdown reverse_gradient"> 
     <li class="dropdown"><a href="#">Teachers</a></li> 
     <li class="lastElementInDropDown dropdown"><a href="#">Students</a></li> 
    </ul> 
</li> 
. 
. 

编辑: 我试过alert($(this).find('ul').html());,我得到一个警报,两者的<li>元素。

$(this).find('ul').show(200);没有工作,要么

内容不动态添加。

我的CSS是这样的:

nav.main_nav ul.dropdown{ 
    opacity: 0; 
    position: absolute; 
    top: 35px; 
    left: 10px; 
    border-bottom-right-radius: 10px; 
    -moz-border-bottom-right-radius: 10px; 
    border-bottom-left-radius: 10px; 
    -moz-border-bottom-left-radius: 10px; 
    display: none; 
    z-index: 100; 
    } 

任何想法?

+0

它对我的工作很好,你可以发表你的代码表示问题的小提琴吗? – 2012-02-25 15:20:09

+0

也适用于我 – Henesnarfel 2012-02-25 15:20:51

+0

工作正常,这意味着有更多这样的([见这个jsFiddle](http://jsfiddle.net/2cFec/))。该菜单项是动态添加的吗?你确定点击事件被调用吗? – Chad 2012-02-25 15:22:53

回答

-1

发现了问题,我在我的样式表,这是阻止我看到下拉菜单中设置不透明度为零。

1

首先,你必须确保你点击的不是链接本身。在这里,你甚至可以点击。 - 但是如果用户真的点击了链接呢?那么他们将被重定向到链接中的href。

所以为了防止你有一个click事件添加到链接它的自我:

$("#dropdown_menuitem a").click(function(e) { 
    if($(this).parent().find('ul').length > 0) { 
     e.preventDefault():; 
    } 
}); 

如果当前存在立一个下拉这将检查 - 如果确实如此,我们不会有它会重定向用户以中断我们的JavaScript执行。所以我们所做的就是防止当前的事件。如重定向。

试试吧,让我知道它的工作:)

+0

仍然不能使用这个。显然我在其他地方有问题 – wbarksdale 2012-02-25 15:46:56

+0

你有任何错误输出?如果不尝试使用console.log();方法抛出文本到浏览器。然后制作其中的一些内容并查看点击事件是否被触发。你也可以尝试在Firefox中使用chrome或firebug来发现元素是否正在改变。例如,你可以打开html查看器。找到ul,然后单击li。然后看看它是否发生了什么。如果有东西试图将鼠标悬停在元素上,以查看它是否与z-index或元素的位置有关。 – danniehansenweb 2012-02-25 17:33:39