私は次のHTML構造を持っています:
<div id="settings-choose">
<a href="#setting1" class="setting-tab">
<div class="content">
<div class="icon setting1-off"></div>
<div class="label">Setting 1</div>
</div>
</a>
<a href="#setting2" class="setting-tab">
<div class="content">
<div class="icon setting2-off"></div>
<div class="label">Setting 2</div>
</div>
</a>
<!-- more .setting-tab elements -->
</div>
.setting-tab
要素の 1 つをクリックするたびに、次のことを行います。
.selected
クラスをその要素に追加し.setting-tab
ます(そして他の要素から削除します)- 子要素
-off
のクラスの " " 部分を" " に置き換えます(そして、他のすべてを " " に反転します)。.icon
-on
-off
#1 は成功しますが、#2 はできません。ここに私が持っているものがあります:
$("#settings-choose .setting-tab").click(function(){
$("#settings-choose .setting-tab").removeClass("selected");
$(this).addClass("selected");
$("#settings-choose .setting-tab").each(function(){
var icon = $(this).find(".icon"),
state = icon.attr("class");
if (!($(this).hasClass("selected"))){
state.replace("-on", "-off");
} else {
state.replace("-off", "-on");
}
});
});
.selected
これにより、クリックされた要素にクラスが正しく追加.setting-tab
され、他の要素から削除されます...
<a href="#setting1" class="setting-tab selected">...</a>
<a href="#setting2" class="setting-tab">...</a>
しかし、要素のクラスは.icon
変わりません...
<a href="#setting1" class="setting-tab selected">
<div class="content">
<div class="icon setting1-off"></div>
<div class="label">Setting 1</div>
</div>
</a>
コンソールにエラーは表示されませんが、変更されません。
私が間違っているアイデアはありますか?