2016-11-06 134 views
0

鉴于以下html结构,如何使#top-bar-toggle切换点击,除非点击.top-bar-menu-search或其子女?切换点击,除了一个元素

<div id="top-bar-toggle"> 
    <div id="top-bar-menu"> 
     <ul class="vertical menu"> 
      <li> 
       <a href="home_link"><h2>Home Item</h2></a> 
      </li> 
      <li> 
       <a href="other_link"><h2>Other Item</h2></a> 
       <ul class="nested vertical menu"> 
        <li><a href="nested_link"><h2>Nested Item</h2></a></li> 
        <li><a href="nested_link"><h2>Nested Item</h2></a></li> 
        <li><a href="nested_link"><h2>Nested Item</h2></a></li> 
       </ul> 
      </li> 
      <li> 
       <a href="other_link"><h2>Other Item</h2></a> 
       <ul class="nested vertical menu"> 
        <li><a href="nested_link"><h2>Nested Item</h2></a></li> 
        <li><a href="nested_link"><h2>Nested Item</h2></a></li> 
        <li><a href="nested_link"><h2>Nested Item</h2></a></li> 
       </ul> 
      </li> 
      <li class="top-bar-menu-search"> 
       <form id="searchform" method="get" role="search"> 
        <div class="input-group"> 
         <span class="input-group-label"></span> 
         <input type="text" placeholder="Search" id="s" name="s" value="" class="input-group-field"> 
        </div> 
       </form> 
      </li> 
     </ul> 
    </div> 
</div> 

我想下面的jQuery代码会工作,但#top-bar-toggle元素获得反正切换...

$('#top-bar-toggle').not('.top-bar-menu-search').click(function() { 
    $(this).fadeToggle(); 
}); 

提前感谢!

回答

1

我想你需要使用jquery的stopPropagation方法。

$('#top-bar-toggle').click(function() { 
    console.log("topbar clicked"); 
    }); 
    $('.top-bar-menu-search').click(function(e) { 
    e.stopPropagation(); 
    console.log("searchbar clicked"); 
    }); 
0

你应该给所有的元素类“A”例如然后onclick类A检查元素的id是否不是例外id切换它... $(“。A”)。on(“click” ,函数(){

如果($(本).attr( “ID”)!= “B”) $(本).fadeToggle()

})

0

也许这个代码将有助于你

$('#top-bar-menu>ul>li>a').on('click', function(e) { 
    e.preventDefault(); 

    $(this).siblings('ul').toggle(); 

}); 
+0

它只是没有工作,因为我需要的'#顶级酒吧toggle'元素来切换当一个又按下外'#顶酒吧menu'。但是,无论如何谢谢你的答案。 –