我如何"撤消" "返回false;"以下链接?

时间:2014-08-01 06:24:33

标签: javascript jquery html html-lists

我知道之前已经问过这个问题,但我仍然无法使其发挥作用。

有一个嵌套列表,用作索引/导航。它有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;
  });

});

2 个答案:

答案 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