我的困境是我想要用户单击的ID soundclip,但要更改.container
的DIV类$( ".container #soundclip" ).bind({
click: function() {
$('.container .audioNavOff').removeClass('audioNavOff');
$('.container $(this) div').addClass('audioNavOn');
},
});
<div class="container">
<div class="audioNavOff">HD AUDIO</div><div class="audioContainer1"><a href="#"><img id="soundclip" src="assets/img/hd-audio-off.jpg" alt="" class="center"/></a></div>
<div class="audioNavOff">DIGITAL</div><div class="audioContainer2"><a href="#"><img id="soundclip" src="assets/img/digital-audio-off.jpg" alt="" class="center"/></a></div>
<div class="audioNavOff">ANALOG</div><div class="audioContainer3"><a href="#"><img id="soundclip" src="assets/img/analog-audio-off.jpg" alt="" class="center"/></a></div>
</div>
$(this).parent().parent().siblings().eq(0).addClass('audioNavOn');
应该工作。它将类添加到上面的元素上方两个级别的元素中,然后选择其第一个同级,即您的Div。
更新
我强烈建议您对HTML进行重组:为三个选项中的每个选项使用一个容器。您甚至可以将它们包裹在您的AudioOff课程中,例如:
<div class="container">
<div class="audioNavOff">HD AUDIO
<div class="audioContainer1">
<a href="#">
<img class="soundclip center" src="assets/img/hd-audio-off.jpg" alt="" />
</a>
</div>
</div>
<div class="audioNavOff">DIGITAL
<div class="audioContainer2">
<a href="#">
<img class="soundclip center" src="assets/img/digital-audio-off.jpg" alt="" />
</a>
</div>
</div>
<div class="audioNavOff">ANALOG
<div class="audioContainer3">
<a href="#">
<img class="soundclip center" src="assets/img/analog-audio-off.jpg" alt="" />
</a>
</div>
</div>
</div>
,也可以将AudionAvoff和AudioContainers组合到一个Div中:
<div class="audioNavOff audioContainer1">
甚至使用ID(这是正确使用它们的地方):
<div class="audioNavOff" id="audioContainer1">
无论您选择哪种方式,它都会使您的生活更容易保持分组,代码将更容易维护,并且您的最终addClass呼叫应该是(如果我上面写的大嵌套示例):
$(this).parent().parent().parent().addClass('audioNavOn'); // $(this).parents().eq(2) is fine too
和顺便说一句。您的页面上不应该具有重复的ID,而是使用类。(请参阅我的示例)