如何使用jQuery删除包含特定文本的div,以及仅删除div后的HR分隔符

时间:2012-12-17 18:50:42

标签: javascript jquery contains

在包含<div>块列表的页面上,每个块都包含位置信息,并且在每个<div>之后都有<hr>,我需要定位并删除所有div那里没有波士顿城市。

我能够轻松删除这些div: $("div.location").not(":contains('Boston')").remove();

那时我注意到剩余的剩余<hr>

首先定位并删除所有分隔符会更好吗?然后是div?我可以用一下jQuery做两件事吗?谢谢!

4 个答案:

答案 0 :(得分:4)

$("div.location").not(":contains('Boston')").next('hr').remove().end().remove();​

<强> DEMO

注意comment

$("div.location").not(":contains('Boston')")  // return the target div
     .next('hr')  // take the pointer to hr, next to target div
     .remove()    // remove the hr
     .end()       // return the pointer to target div.location again
     .remove();​   // remove the target div

答案 1 :(得分:1)

  

我可以用jQuery的一击来做两件事吗

不是说它“更好”,但你可以随时将其链接起来,移除next() HR,然后使用end()退一步并remove() div,或者执行此操作另一种方法是首先删除div,并不重要:

$('div.location').filter(function() {
    return $(this).text().indexOf('Boston') == -1;
}).next('hr').remove().end().remove();

答案 2 :(得分:1)

显而易见的是$("div.location:not(:contains('Boston')), div.location:not(:contains('Boston')) + hr").remove()​

答案 3 :(得分:0)

使用简单的选择器,然后获得留在

上的联合hr元素
$("div.location:not(:contains('Boston'))").remove().add("hr+hr").remove();

编辑: 通过直接选择首先避免双dom操纵

$("div.location:not(:contains('how'))").add("div.location:not(:contains('how'))+hr").remove();