即使在阅读jQuery stopPropagation for only some class of elements、Javascript toggle class on element和无数其他参考资料之后,也很难解决这个问题。
我想在单击 nav > ul > li AND .dd-toggle(.dropdown 的子项)时切换类“活动”,但不是 .dropdown 本身或其中的任何内容(.dd-toggle 除外)。
<nav class="nav-dropdowns" role="navigation">
<ul>
<li class="">
<span class="dropdown-title">Price</span>
<div class="dropdown">
<a class="dd-toggle">X</a>
<div id="field-price" class="field"><label>Price Range</label>
<div class="details"></div>
</div>
</div> <button type="submit" class="extra-submit buttonstyle">Search</button>
</div>
</li>
<li class="">
<span class="dropdown-title">Type</span>
<div class="dropdown">
<a class="dd-toggle">X</a>
<div id="field-type" class="field"><label>Property Type</label>
<div class="details"></div>
</div> <button type="submit">Search</button>
</div>
</li>
<li class="search-submit">
<button class="search-button" type="submit">Search</button>
</li>
</ul>
</nav>
我尝试了许多变化,从以下开始:
jQuery(document).ready(function($){
$( "nav > ul > li" ).click(function() {
$( this ).closest().toggleClass( "active" );
});
});
然后
jQuery(document).ready(function($){
$( "nav > ul > li" ).click(function() {
$( this ).toggleClass( "active" );
});
$('.dropdown').click(function(e) {
return false;
});
});
最后
jQuery(document).ready(function($){
$( "nav > ul > li" ).click(function( event ) {
event.stopImmediatePropagation();
$( this ).toggleClass( "active" ).not('.dropdown');
});
});
我忽略了或最接近的孩子,但不知道该怎么做,但仍然观察孩子的孩子。也许只有第一个孩子的?
忽略 .dropdown 但不忽略 .dd-toggle
我接近了吗?