2014-02-24 72 views
-1

我有一個是這樣的(我手動輸入一些這方面的插件生成的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> 

我需要的是方法來隱藏含有「空」的小於四個實例的DIV

我有這樣的變量,其過濾那些具有4個空值:

var m = $('div.pluginoutput:contains("PersonName")').filter(function(){return(this).find('p:contains("Null")').length == 4;}); 

而這種過濾掉具有少於四個「空值」的一個:

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"); 

但這並不出於某種原因。我做錯了什麼?謝謝。

+1

有用的提示,看看Chrome瀏覽器開發工具,並學習如何調試代碼。一個簡單的'console.log'會告訴你這些變量(m和n)不包含你正在尋找的值。 – Valentin

+1

@Valentin:或者更好,而不是'console.log',調試器和檢查代碼時的事情。 –

+0

其實他們這樣做。我沒有改變任何代碼,除了添加$(變量).hide()作爲第一個評論者的建議。 –

回答

0

您的代碼中有錯字。它應該是.addClass

n.addClass("hidden"); 

當談到隱藏它們,你可以簡單地使用:

n.hide() 
+1

還要注意,'n'已經*了一個jQuery對象,不需要再次調用'$()'。 –

+0

@ T.J.Crowder:謝謝。 –

+0

'$(q).hide();'工作。謝謝 –

1

在你filter回調,你正在做的:

(this) 

...,你可能想要

$(this) 

例如:

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"); 
0

您需要更改this$(this)。您還可以使用addClass()直接在過濾後:

var n = $('div.pluginoutput:contains("PersonName")').filter(function(){return $(this).find('p:contains("Null")').length < 4;}).addClass("hidden"); 

Fiddle Demo