2013-07-18 67 views
0

我想在我的網站上執行一個臨時快速入侵,因爲我需要隱藏頁面上的幾個跨度,並不想要通過所有的PHP去永久刪除它們。所以只是想用jQuery來隱藏它們。jquery隱藏跨度包含某些數字

我想用hide()結隱藏含1任意數量的跨度爲9

所以頁面我>>

<span>good</span> 
<span>2</span> 
    <span>3</span> 
     <span>4</span> 
     <span>5</span> 
      <span>ok</span> 

等上......與最終結局一個在<span>bad</span>

我有關於這30個名單,所以想要做的事,如:

if span contains a number from 1-9, hide it. 

我以前用hide()這個函數來隱藏東西onclick等等,但是我不知道如何隱藏內容等於一個數字,誰能指出我的方向是正確的?

+0

http://stackoverflow.com/questions/7344220/jquery-selector-contains-to-equals/7344402#7344402也許這可以幫助你以某種方式 –

+0

可以你提供了一個小提琴,這將有助於 – vipulsharma

回答

1

試試這個:http://jsfiddle.net/ehmjm/

$("span").filter(function() { 
    var num = Number($(this).text()); 
    return num >= 1 && num <= 9; 
}).hide(); 

或正則表達式:http://jsfiddle.net/ehmjm/2/

$("span").filter(function() { 
    return $(this).text().match(/^[1-9]$/); 
}).hide(); 

注:我從你正在尋找隱藏只有在一個數字跨度的樣本DOM假設,如果你想隱藏像「我有5只狗」的東西,你需要做一些有點不同的事情。

+0

他們仍然在那裏:(值得一提的是,跨度是由jQuery滑塊創建的,這是一個例子 2

+0

我只需要任何只有在他們的數字隱藏:) –

+0

我沒有看到他們仍然存在,即使你剛剛給你的例子:http://jsfiddle.net/ehmjm/1/。如果你仍然看到它們,你會想確保你的javascript是在dom被構建之後運行的。將javascript包裝在'$(document).ready(function(){[code here]});' – smerny

0
$('span').each(function(){ 
    if($(this).text().match(/^([1-9])$/))$(this).hide() 
}); 

FIDDLE

+0

這將隱藏所有數字,例如52。 – vipulsharma

+0

@vipulsharma對不起,我的壞。我現在改了它 – Spokey

+0

對於這樣的事情來說,通常最好使用'filter',因爲您希望將相同的更改應用於匹配的所有內容。使用過濾器,您可以將更改應用於所有匹配,而不是單獨應用。此外,你正在創建兩次相同的jquery對象,這也會對性能產生影響。 – smerny

0

好,我猜IM遲到了。然而,這是我的aproach:

jsfiddle

$('span').each(function(index, value) { 
    if($(this).html() > 0 && $(this).html() < 10) 
    { 
     $(this).hide(); 
    } 
}); 
+0

這是逐個修改每個元素,並通過每個迭代過程創建3個(相同的)jquery對象。這些東西不利於性能。如果你打算使用相同的jquery選擇器,你可以將它緩存爲'$ this = $(this)',然後使用'$ this'而不是爲它創建一個新的jquery對象。 – smerny

+0

另外,'1'不會通過你的條件。 – smerny

+0

thx指出。 – cptnk