在包含<div>
块列表的页面上,每个块都包含位置信息,并且在每个<div>
之后都有<hr>
,我需要定位并删除所有div那里没有波士顿城市。
我能够轻松删除这些div:
$("div.location").not(":contains('Boston')").remove();
那时我注意到剩余的剩余<hr>
首先定位并删除所有分隔符会更好吗?然后是div?我可以用一下jQuery做两件事吗?谢谢!
答案 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();