我知道之前已经问过这个问题,但我仍然无法使其发挥作用。
有一个嵌套列表,用作索引/导航。它有4层深,第四层有链接。使用jQuery切换更高级别。为了使javascript工作,我必须使用“return false;”。但是这些链接不起作用。
如何让第四级链接再次起作用,即“return true;”?
提前致谢!
HTML:
<ul class="nav">
<li>nav 1
<ul>
<li>nav 1.1
<ul>
<li>nav 1.1.1
<ul>
<li><a href="http://google.com">google</a></li>
<li><a href="http://amazon.com">amazon</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
使用Javascript:
$(document).ready(function(){
$("li ul").hide();
$("li").click(function() {
//if li-element has class "active"
if ($(this).hasClass("active")) {
//remove "active" class from li-element
$(this).has( "ul" ).removeClass("active");
//remove "active" class from child li-elements
$(this).has( "ul" ).find('li').removeClass("active");
//hide nested ul-elements
$(this).has( "ul" ).find("ul").slideUp("fast");
else { //if li-element has no class "active"
//remove "active" class from adjacent li-elements
$(this).has( "ul" ).siblings('li').removeClass("active");
$(this).has( "ul" ).siblings('li').find('li').removeClass("active");
//hide nested ul-elements from adjacent li-elements
$(this).has( "ul" ).siblings('li').find("ul").slideUp("fast");
//add "active" class to li-element
$(this).has( "ul" ).addClass("active");
//show nested ul-element
$(this).has( "ul" ).children("ul").slideDown("fast");
}
return false;
});
//this doesn't work :-(
$(".nav > li > ul > li > ul > li > ul > li > a").click(function(){
return true;
});
});
答案 0 :(得分:1)
你需要阻止事件冒泡。很简单。
$("a").click(function (e) {
e.stopPropagation();
});
取代:
//this doesn't work :-(
$(".nav > li > ul > li > ul > li > ul > li > a").click(function(){
return true;
});
答案 1 :(得分:0)
将停止链接分成某个类更好。例如
<li><a class="dummy" href="http://google.com">google</a></li>
<li><a class="dummy" href="http://amazon.com">amazon</a></li>
添加一些js
$('a.dummy').on('click', function(event) {
event.preventDefault();
});
从return false
事件处理程序中删除li
。