私は時にユーザーがクリック画像を変更したいスプライトタブメニューを持っている、問題は、私はそれを正しく行う方法を見つけ出す傾けることで、これは私が持っているものです。MooToolsのスプライトメニュー
<ul id="addCategoryList">
<li id='task' class="sprite-add-task-category-tasks menu-task "></li>
<li id='grades' class="sprite-add-task-category-tasks menu-grades-inactive"> </li>
<li id='results' class="sprite-add-task-category-tasks menu-results-inactive"></li>
<li id='other' class="sprite-add-task-category-tasks menu-other-inactive"></li>
</ul>
とこのJavaScriptです:
var getCategory = $('addCategoryList').getChildren();
getCategory.each(function(li){
li.addEvent('click', function(){
this.removeClass('menu-'+this.id+'-inactive').addClass('menu-'+this.id);
});
});
問題は、私がクリックしたときに、それがクリックされたただ一つに反対するとして、アクティブ二つのカテゴリーを示すことです。 「menu-id-inactive」と「menu-id」の唯一の違いは、ユーザーが/
であります前のアクティブ状態のアクティブ状態。 $$( "#id")は、addEventを適用するための.eachを行うコレクションを返します。ただし、委任によって行うことはおそらく良いことです。メニュー項目自体の中でクリック動作を混乱させることはないと考えられます。正直なところ - 時には、より多くのことが近視眼であり、読み込み/維持が難しいこともあります。ファンクションや可読性を犠牲にして過度に最適化しないようにしてください:) –
http://jsfiddle.net/dimitar/z3nuq/3/ –
liのみがアクティブである必要があります。イベントの委任は、このケースでは行き過ぎの最適化ではないと考えています:)すべてがうまくいっていることを願っています! –