如何选择之前的同一个类的所有元素

时间:2014-10-31 13:16:41

标签: javascript jquery

我有这样的事情:

<div class="htx">
    <div>string</div>
</div>
<div class="htx">
    <div>string</div>
</div>
<div class="htx">
    <div>otherString</div>
</div>
<div class="htx">
    <div>string</div>
</div>

我想在包含otherString

的那个之前选择所有htx类元素
var res = $('.htx:contains("otherString")');
var sec = res.prevAll();

这不起作用。

5 个答案:

答案 0 :(得分:0)

您可以使用:

var res = $('.htx:contains("otherString")');
var sec = res.prevAll('.htx');

答案 1 :(得分:0)

jsfiddle(使用问题+ console.log中的确切代码)

按预期工作,console.log(sec.toArray());显示您正在寻找的2个div

答案 2 :(得分:0)

就像那样,

var res = $('.htx div:contains(otherString)');
var sec = res.prevAll();

答案 3 :(得分:0)

使用纯JavaScript可以执行此操作:

Fiddle

上的演示
var all = document.getElementsByClassName('htx');
for (i = 0; i < all.length; i++) {
    if (all[i].getElementsByTagName('div')[0].innerHTML == 'otherString') {
        break
    } else {
        all[i].style.backgroundColor = 'sienna';
    }
}

答案 4 :(得分:0)

在jquery中尝试这个:

var l = $(".htx").lenght;
var elements ="";
for(var i=i; i<=l; i++)
{
    if($(".htx:nth-child('" + i + "')").children("div").text() == "otherString")
        break;
    else
        elements += $(".htx:nth-child('+i+')");
}

希望这有帮助。