我需要选择包含特定元素的前一个元素的元素。 难以理解让我以这种方式解释。
HTML(DOM):
<div><a></a></div>
<div><p class="selectThis"></p></div> ------
-
<div><a></a></div> - select from previous element which holds class
-
<div><p class="fromThis"></p></div> --------
我以前绑的是什么:
$('.fromThis').parent().prev(); //
答案 0 :(得分:0)
这不是最漂亮的,但它会选择元素并添加一个类
jQuery解决方案
$("a").on("click", function(event) {
event.preventDefault();
$(this).parent().prevAll().find(".selectThis").css({"background": "gold"});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div><a></a></div>
<div><p class="selectThis">This is a paragraph</p></div>
<div><a href="www.google.com">Select previous class</a></div>
<div><p class="fromThis"></p></div>
&#13;
单击链接时,默认行为是打开新选项卡。为防止这种情况发生,我们可以调用preventDefault
操作。
要查找类selectThis
的div,我们向上遍历以查找父元素,向后遍历以查找其兄弟元素。要找到兄弟姐妹的孩子,我们使用find()
方法。
答案 1 :(得分:0)
你可以做到
$('.fromThis').parent().prevAll().find('.selectThis');
从div的级别,您将选择此级别上的所有先前兄弟(即其他div)。然后选择具有selectThis
类的div的所有后代。因此,它不仅必须选择元素或最接近fromThis
,而且必须选择整组元素。
如果只选择最接近原始元素的元素很重要,则必须像这样扩展表达式:
$('.fromThis').parent().prevAll().find('.selectThis').last();
答案 2 :(得分:0)
我的解决方案是:找到第一个父级,然后找到所有兄弟姐妹,然后过滤类:
$('.fromThis').parent().siblings().find('.selectThis')