代码之家  ›  专栏  ›  技术社区  ›  Stephen Way

简单jquery上下文菜单单击问题

  •  1
  • Stephen Way  · 技术社区  · 16 年前

    我绝对想避开插件,我想要一些轻量和简单的东西。这是我在上下文菜单中得到的。我可以点击 li.dd a 它揭示了 ul 当我再次点击它时,它隐藏了 UL 。我不能做的是点击 UL 。它不链接到该锚,而是隐藏菜单。有什么我需要做的吗?

    html:
      <ul class="tools">
        <li class="dd"><a href="#" class="bnt">Tools</a>
          <ul>
            <li><a href="#">Item 1</a></li>
            <li><a href="#">Item 2</a></li>
            <li><a href="#" class="last">Item 3</a></li>
          </ul>
        </li>
      </ul>
    
    SASS:
      .tools
        font-weight: bold
        margin: 12px 0 -12px !important
        text-align: right
        a.bnt
          border: #404041 1px solid
          color: #fff !important
          padding: 6px 15px
        ul
          background-color: #fff
          margin-top: 20px !important
          margin-left: 106px !important
          width: 210px
          a
            border-bottom: #cfcfcf 1px solid
            color: #666
            display: block
            font-weight: normal
            padding: 6px 20px
            text-align: left
            &:hover
              background-color: #000
              color: #fff
            &.last
              border-bottom: none
    
    jQuery:
    $(function() {
      $(".dd").toggle(
        function(){ 
          $("ul", this).fadeIn("fast");
          $(this).addClass('on');
              }, 
        function(){ $("ul", this).fadeOut("fast"); $(this).removeClass('on'); }
      );
    });
    
    1 回复  |  直到 16 年前
        1
  •  1
  •   Eran Galperin    16 年前

    因为您将Click事件附加到了包含锚定的列表项,所以应该是这样。您可以放置一个专用元素来处理切换事件,将事件移动到内部列表项之外的第一个定位点,或者停止定位点上单击事件的传播。-

    $('.dd li a').click(function(e) {
       e.stopPropagation();
    });