2017-06-04 91 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在你的選擇器中爲每個選項執行操作(就像循環一樣)