如果当前元素具有某个类,则将类添加到上一个元素

时间:2017-05-19 12:10:25

标签: javascript jquery html css css-tables

我希望定位一个表格,该表格位于我希望用作“触发器”的元素之外。然后给它一个额外的课程。

<div>
 <table class="table"></table>
</div>

<div></div>

<div class="trigger">
 <!---content open--->
</div>

班级&#34;触发&#34;只有当div打开时才会出现,所以当它打开并添加类时,我想将表直接定位在它上面,并且仅限于该表。问题是表类&#34;表&#34;在页面上出现不止一次,两个元素之间总是有一个div。我怎么才能直接选择那一张桌子?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你想在你的桌子上加一个课吧?如果是这种情况,您可以将ID添加到您要修改的唯一表格中,然后使用addClass

<script>
    //perform condition checking
    $("#myTableID").addClass("class_to_add");
</script>
...
<div>
   <table id="myTableID"></table>
</div>

<div></div>

<div class="trigger">
  <!---content open--->
</div>

答案 1 :(得分:0)

鉴于您的HTML结构,您尝试匹配的表是要触发的兄弟节点的子节点:

使用prevAll()获取触发器的所有前面的兄弟,在其中搜索.table find(),并将最后一个保留在结果匹配中。

var preceding = $('.trigger').prevAll().find('.table').last();
$(preceding).addClass('match'); // for demo, so you can see what matched
.match {
  color: #F00;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <table class="table"><tr><td>Don't want this table</td></tr></table>
</div>
<div>
  <table class="table"><tr><td>Do want this table</td></tr></table>
</div>
<div>This sibling doesn't have a table</div>
<div class="trigger">This is the trigger</div>
<div class="table">Don't want this div</div>
<div>
  <table class="table"><tr><td>or this table</td></tr></table>
</div>

这非常脆弱。如果可能,请考虑使用特定的类名或ID,而不是依赖于文档顺序。