我正在尝试编写代码以删除其<p>
子项包含数组值的所有DIV。
我的代码没有用,你可以帮帮我吗?
也许你有比我更好的方法。
$(document).ready(function () {
var values=['VALUE1','VALUE2'];
for(var i=0;i<values.length;i++) {
$("p:contains(values[i])").closest('.mainDiv').remove();
}
});
这是HTML框架(jQuery代码只在页面上留下VALUE0 DIV):
<div class="clear mainDiv">
<div class="clear">
<div class="sidebar">
<p align="center" class="tgValue">
<a href="">
VALUE0
</a>
</p>
</div>
</div>
</div>
<div class="clear mainDiv">
<div class="clear">
<div class="sidebar">
<p align="center" class="tgValue">
<a href="">
VALUE1
</a>
</p>
</div>
</div>
</div>
<div class="clear mainDiv">
<div class="clear">
<div class="sidebar">
<p align="center" class="tgValue">
<a href="">
VALUE2
</a>
</p>
</div>
</div>
</div>
<div class="clear mainDiv">
<div class="clear">
<div class="sidebar">
<p align="center" class="tgValue">
<a href="">
VALUE1
</a>
</p>
</div>
</div>
</div>
答案 0 :(得分:3)
您需要使用字符串连接将变量的值添加到字符串文字
$(".mainDiv p:contains(" + values[i] + ")").closest('.mainDiv').remove();
演示:Fiddle
使用:contains将返回部分匹配,例如Value10
将由选择器:contains(Value1)
返回 - Demo
如果您不希望发生这种情况,请使用
等过滤器jQuery(function ($) {
var values = ['VALUE1', 'VALUE2'];
for (var i = 0; i < values.length; i++) {
$(".mainDiv p").filter(function () {
return $.trim($(this).text()) == values[i]
}).closest('.mainDiv').remove();
}
});
演示:Fiddle
答案 1 :(得分:2)
你错误地进入了jQuery语句。
替换你的代码
$("p:contains(values[i])").closest('.mainDiv').remove();
与
$("p:contains('"+values[i]+"')").closest('.mainDiv').remove();