2013-07-18 39 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