我可以使用$(这)来影响另一个选择器



我的困境是我想要用户单击的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,而是使用类。(请参阅我的示例)

最新更新