将类添加到已过滤的元素

时间:2014-02-24 08:25:50

标签: jquery

我有一些插件生成的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");

但由于某种原因,这不起作用。我做错了什么?感谢。

3 个答案:

答案 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