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ベースの折りたたみ可能なメニューです。アクティブとは、メニュー項目が折りたたまれていない、つまり開いていることを意味します。
さて、問題は、jQueryコードを最適化できるか(つまり、同じ機能をより少ないコードで)できるかということです。もしそうなら、どのように?