単純:
function toggle(all) {
$('.all-projects').toggle(all);
$('.my-projects').toggle(!all);
}
$('.btn-my-projects').click(function() {
toggle(false);
});
$('.btn-all-projects').click(function() {
toggle(true);
});
もっと簡潔にしたい場合:
function makeClickHandler(all) {
return function () {
$('.all-projects').toggle(all);
$('.my-projects').toggle(!all);
};
}
$('.btn-my-projects').click(makeClickHandler(false));
$('.btn-all-projects').click(makeClickHandler(true));
data-*
または、まったく異なるアプローチを取り、HTML5属性を使用して、どのボタンがどの div を表示および非表示にするかの間のリンクをマークアップに配置することもできます。このようなもの:
<button class="project-control" data-show=".all-projects">
Show all projects
</button>
<button class="project-control" data-show=".my-projects">
Show my projects
</button>
<div class="project all-projects">...</div>
<div class="project my-projects">...</div>
次のような JavaScript を使用します。
$('.project-control').on('click', function () {
var showSelector = $(this).data('show');
$('.project').hide();
$(showSelector).show();
});
注意: 実際のページでは、選択した要素をキャッシュする必要があるでしょう。