如何在jquery中找到已排序的前一个元素。

时间:2011-09-28 10:43:16

标签: javascript jquery

<div id="con" >
    <p class="bb">1</p>
    <p class="aa">2</p>
    <p class="aa">3</p>
    <p class="bb">4</p> /*----- i want this reference */
    <p class="aa">5</p>
    <p class="aa">6</p>
    <p id="last" class="aa">7</p>
    <p class="aa">6</p>
    <p class="aa">6</p>
</div>

我想找到具有排序值的兄弟姐妹中的前一个元素。 在这里我想找到'p'在#last

之前有'aa'类
$("#last").prev('p.bb').text()

//空字符串

 $("#last").prev().text()

//将提供 6

我想要4 ..只是前一个最接近'p.bb'的文本

2 个答案:

答案 0 :(得分:2)

是吗:

$("#last").siblings('p.bb:last').text()
你正在寻找?演示:http://jsbin.com/opaqen/edit

或者是这样的:

http://jsbin.com/opaqen/2/edit

或使用.prevAll()从#last:

获取所有以前的兄弟姐妹
var lastB = $("#last").prevAll("p.bb:first");
lastB.css("background-color","#f00");

答案 1 :(得分:1)

我不确定您正在寻找什么,但假设您想找到p元素之前的bb课程#last:< / p>

var $last = $('#last');

var lastIndex = $last.index('#con p');

for (i=lastIndex; i>=0; i--){
    if ($('#con p').eq(i).hasClass('bb')){
        $('#con p').eq(i).css('background-color','#f00');
        alert($('#con p').eq(i).text());
        break;
    }
}

JS Fiddle demo

虽然这比@voigtan的答案更加冗长,但它允许您使用任何任意元素,并确保找到的.bb元素始终在此之前发生元件。