我有以下 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
元素时,我都想:
- 将类添加
.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>
我在控制台中没有收到任何错误,只是......它没有改变。
有什么想法我哪里出错了吗?