我有一些插件生成的html就是这样(我手动输入,请不要介意错误:
<div class="pluginoutput">
<p>PersonName</p>
<p>MyData</p>
<p>Null</p>
<p>Null</p>
<p>Null</p>
</div>
<div class="pluginoutput">
<p>PersonName</p>
<p>Null</p>
<p>Null</p>
<p>Null</p>
<p>Null</p>
</div>
我需要的是隐藏包含少于四个“Null”实例的DIV。
我有这个变量可以过滤那些有4个Null的变量:
var m = $('div.pluginoutput:contains("PersonName")').filter(function(){return(this).find('p:contains("Null")').length == 4;});
这就过滤了少于四个“Nulls”的那个:
var n = $('div.pluginoutput:contains("PersonName")').filter(function(){return(this).find('p:contains("Null")').length < 4;});
现在我想隐藏n。 我试过了
$(n).addclass("hidden");
和
$('div.pluginoutput:contains("PersonName")').filter(function(){return(this).find('p:contains("Null")').length < 4;}).addClass("hidden");
但由于某种原因,这不起作用。我做错了什么?感谢。
答案 0 :(得分:1)
在你的filter
回调中,你正在做:
(this)
...你可能想要的地方
$(this)
E.g:
var n = $('div.pluginoutput:contains("PersonName")').filter(function(){return(this).find('p:contains("Null")').length < 4;});
// Need $ (with space in front) here ----------------------------------------^
你也在使用addclass
,你应该使用addClass
,而n
已经一个jQuery实例,你不想再次致电$()
。
请修正上面的(this)
问题,然后
n.addClass("hidden");
答案 1 :(得分:0)
你的代码中有拼写错误。它应该是.addClass
。
n.addClass("hidden");
当涉及隐藏它们时,您可以简单地使用:
n.hide()
答案 2 :(得分:0)
您需要将this
更改为$(this)
。您也可以直接在过滤后使用addClass()
:
var n = $('div.pluginoutput:contains("PersonName")').filter(function(){return $(this).find('p:contains("Null")').length < 4;}).addClass("hidden");
<强> Fiddle Demo 强>