除了一个元素外点击切换
Toggle on click except one element
给定以下 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();
});
提前致谢!
你应该给所有元素 class "A" 例如然后在 class 的 onclick 上检查元素的 id 是否不例外 id 切换它......
$(".A").on("click",函数(){
if($(this).attr("id")!="B")
$(this).fadeToggle()
})
我认为你需要使用 jquery 的 stopPropagation 方法。
$('#top-bar-toggle').click(function() {
console.log("topbar clicked");
});
$('.top-bar-menu-search').click(function(e) {
e.stopPropagation();
console.log("searchbar clicked");
});
也许这段代码能帮到你
$('#top-bar-menu>ul>li>a').on('click', function(e) {
e.preventDefault();
$(this).siblings('ul').toggle();
});
给定以下 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();
});
提前致谢!
你应该给所有元素 class "A" 例如然后在 class 的 onclick 上检查元素的 id 是否不例外 id 切换它...... $(".A").on("click",函数(){
if($(this).attr("id")!="B") $(this).fadeToggle()
})
我认为你需要使用 jquery 的 stopPropagation 方法。
$('#top-bar-toggle').click(function() {
console.log("topbar clicked");
});
$('.top-bar-menu-search').click(function(e) {
e.stopPropagation();
console.log("searchbar clicked");
});
也许这段代码能帮到你
$('#top-bar-menu>ul>li>a').on('click', function(e) {
e.preventDefault();
$(this).siblings('ul').toggle();
});