2017-06-04 87 views
1

我在表格中有一些行,如下面的代码,并且我想在几秒钟后隐藏td的内容(我用循环中的文本填充它们) 。 我的示例代码是这样的jQuery如何在表格中隐藏所有包含td的跨度

setTimeout(function() { 
    $('span').each(function(index, el) { 
     $(this).hide();//nothing happens 
    }); 
}, 5000); 


<tr> 
    <span class="myspan"><td></td></span> 
    <span class="myspan"><td></td></span> 
    <span class="myspan"><td></td></span> 
    <span class="myspan"><td></td></span> 
</tr> 

我用其他的方法太像保存所有span s到一个数组,或选择类和隐藏它试图。

var arr=$('span'); 
for (var i=0;i<arr.length;i++){ 
    arr[i].css('visibility','hidden'); 
} 

但是同样的事情发生了。我希望能够表现出当它的需要没有隐藏的边界,如果有可能

+4

看看你的DOM;不管HTML如何,在DOM中将不会有''元素封装了'​​'元素;它是无效的HTML:如果你想在'

'中使用'',那么''必须包含在'​​'或'
'中。 –

+0

您不能将'span'元素作为'tr'元素的子节点,并且'td'元素不能具有除tr元素之外的任何其他元素作为父节点。 –

+0

我希望能够隐藏td的内容并能够再次显示它们,这是因为我认为这种方法。我尝试了很多没有成功的事情。你能提出一些建议吗? :) –

回答

-1

要隐藏所有5秒后,您可以使用下面的代码

setTimeout(function() { 
$('table tr span').hide(5000); 
}, 5000); 

隐藏td的内容或者

setTimeout(function() { 
    $('table tr span').css('visibility','hidden'); 
}, 5000); 
0

你可以在表中使用td标签中的任何元素。 否则浏览器会将您的代码转换为有效的代码。 输出你的HTML就是这样在浏览器中:

<body> 
    <span class="myspan"></span> 
    <span class="myspan"></span> 
    <span class="myspan"></span> 
    <span class="myspan"></span> 
    <table> 
     <tbody> 
      <tr> 
      <td></td> 
      <td></td> 
      <td></td> 
      <td></td> 
     </tr> 
     </tbody> 
    </table> 
</body> 

您选择跨度但在你的目标跨度不超过TD。所以你的错误是虚假的。

你必须改变侑HTML:

<tr> 
    <td><span class="myspan"></span></td> 
    <td><span class="myspan"></span></td> 
    <td><span class="myspan"></span></td> 
    <td><span class="myspan"></span></td> 
</tr> 

现在你可以选择它,做你的功能:

var arr=$('span'); 
arr.css('visibility','hidden'); 

var arr=$('span'); 
arr.hide(); 

后显示侑它:

att.show(); 

你不需要或任何循环。只需选择你的目标,然后说你想做什么。 JQuery在你的选择器中为每个选项执行操作(就像循环一样)