如何获得具有特定元素的前一个元素?

时间:2015-12-07 21:40:16

标签: javascript jquery html

我需要选择包含特定元素的前一个元素的元素。 难以理解让我以这种方式解释。

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(); //

3 个答案:

答案 0 :(得分:0)

这不是最漂亮的,但它会选择元素并添加一个类

jQuery解决方案

&#13;
&#13;
$("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;
&#13;
&#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')