我希望定位一个表格,该表格位于我希望用作“触发器”的元素之外。然后给它一个额外的课程。
<div>
<table class="table"></table>
</div>
<div></div>
<div class="trigger">
<!---content open--->
</div>
班级&#34;触发&#34;只有当div打开时才会出现,所以当它打开并添加类时,我想将表直接定位在它上面,并且仅限于该表。问题是表类&#34;表&#34;在页面上出现不止一次,两个元素之间总是有一个div。我怎么才能直接选择那一张桌子?
答案 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,而不是依赖于文档顺序。