示例 HTML(为了清楚起见):
<nav>
<ul>
<li class="top-navbar-channels">
<a href="#"></a>
<div class="dropdown-menu">BLAH, BLAH, BLAH!</div>
</li>
<li class="top-navbar-about">
<a href="#"></a>
<div class="dropdown-menu-about">BLAH, BLAH, BLAH!</div>
</li>
<li class="top-navbar-search">
<a href="#"></a>
<div class="dropdown-menu-search">BLAH, BLAH, BLAH!</div>
</li>
</ul>
</nav>
示例 jQuery 代码:
jQuery(document).ready(function($){
$('.dropdown-menu').on('show', function () {
$('.top-navbar-channels > a').addClass('selected');
});
$('.dropdown-menu').on('hide', function () {
$('.top-navbar-channels > a').removeClass('selected');
});
$('.dropdown-menu-about').on('show', function () {
$('.top-navbar-about > a').addClass('selected');
});
$('.dropdown-menu-about').on('hide', function () {
$('.top-navbar-about > a').removeClass('selected');
});
$('.dropdown-menu-search').on('show', function () {
$('.top-navbar-search > a').addClass('selected');
});
$('.dropdown-menu-search').on('hide', function () {
$('.top-navbar-search > a').removeClass('selected');
});
});
对于那些好奇的人... jQuery 代码selected
为活动菜单项的链接添加了一个新类。在我的情况下,它是基于 Twitter Bootstrap 的可折叠菜单,其中 active 表示菜单项未折叠,即打开。
现在的问题是,能否优化 jQuery 代码(即相同的功能用更少的代码)?如果是这样,怎么做?