2011-06-08 22 views
1

的所有行我使用這個代碼隱藏在上的狀態的表中的第六列中的元素的碼(我的意思是,如果表中的跨度第四列的文本是「0」)。
但是這段代碼只適用於表格的第一行。
我該如何爲目標表的所有行執行此功能?運行表的jQuery

if ($('#table tr td:eq(4) > span').text() == "0") { 
      $('#table tr td:eq(6) > .PrintReport').hide(); 
     } 
+0

所有TD有PrintReport類? – Vivek 2011-06-08 11:59:26

+0

你可以給我們你的問題在jsfiddle? – Vivek 2011-06-08 11:59:51

+0

@Vivek是所有人都有這個類 – Shahin 2011-06-08 12:04:04

回答

4

如果你能發佈的tr那麼你會得到更優化的解決方案,完整的HTML結構。綜觀現有的代碼,你可以做這樣的事情:

$('#table tr').each(function() { 
    var text = $('td:eq(4) > span', this).text(); 

    $('td:eq(6) > .PrintReport', this).toggle(text != '0'); 
}); 

注意,在循環中我使用this作爲選擇的上下文。

編輯:一些解釋上面的代碼 -

//This runs the selector in the context of 'this' (the table row) 
    //It is functionally equivalent to $(this).find('td:eq(6) > .PrintReport') 
    $('td:eq(6) > .PrintReport', this) 

    //This will .show() it if the expression evaluates to true 
    //and hide if false 
    .toggle(text != '0') 
+0

我喜歡你的實現:-) +1 – Raja 2011-06-08 12:11:17

+0

謝謝,請你描述這一行 $('td:eq(6)> .PrintReport',this).toggle(text!='0'); ? – Shahin 2011-06-08 12:21:55

+1

@shaahin當然,檢查編輯的解釋。 @Raja優良,P – 2011-06-08 12:32:23

1

總得來看但這應該工作:通過與各。每排http://jsfiddle.net/thomas4g/aAQNC/4/ 環......

$("#table tr").each(function() { 
     $(this).children("td:eq(6) > .PrintReport").hide(); 
     }); 
+1

這並不檢查span的值是否爲「0」 – Raja 2011-06-08 12:00:27

+1

@Raja我認爲OP能夠在自己身上添加:-) ...加上它似乎是主要問題是如何處理所有的行。 – 2011-06-08 12:04:30

+0

該死的....只是看到你的「必須跑」....我只是看到了代碼托馬斯......我的壞 – Raja 2011-06-08 12:12:57

1

我認爲你應該使用每個()爲它的每一行工作。請試試這個(只是它寫在了蒼蠅和未測試):

$('#table tr td:eq(4) > span').each(function(){ 
    if ($(this).html() == "0") { 
      $(this).closest("tr").find('.PrintReport').hide(); 
     } 
}); 
+0

壁櫥只會尋找前行的當前行。 – Vivek 2011-06-08 12:02:12

2
$('#table tr').each(function() { 
    var text = $('td:eq(4) > span', this).text(); 
    if(text=='0') 
    $('td:eq(6)').find('+.PrintReport').hide(); 
    }); 
+0

1爲滿溶液(i懶得:-)) – 2011-06-08 12:09:28

+0

感謝好友。 :) – Vivek 2011-06-08 12:12:53

+0

謝謝:) 什麼+在這條線的使用情況如何? $('td:eq(6)')。find('+。PrintReport')。hide(); – Shahin 2011-06-08 12:23:04

2
$('table tr').filter(function() { 
    return $('td:eq(4) > span', this).text() == "0"; 
}).find('td:eq(6) > .PrintReport').hide(); 

UPDATE:如果你正在尋找的第4和第6列(在人類措施)你有分別對:eq使用3和5,因爲它適用於基於0的索引。我保持原樣,只是想給出這個警告。

我還添加了工作演示: jsFiddle Demo