的所有行我使用這個代碼隱藏在上的狀態的表中的第六列中的元素的碼(我的意思是,如果表中的跨度第四列的文本是「0」)。
但是這段代碼只適用於表格的第一行。
我該如何爲目標表的所有行執行此功能?運行表的jQuery
if ($('#table tr td:eq(4) > span').text() == "0") {
$('#table tr td:eq(6) > .PrintReport').hide();
}
的所有行我使用這個代碼隱藏在上的狀態的表中的第六列中的元素的碼(我的意思是,如果表中的跨度第四列的文本是「0」)。
但是這段代碼只適用於表格的第一行。
我該如何爲目標表的所有行執行此功能?運行表的jQuery
if ($('#table tr td:eq(4) > span').text() == "0") {
$('#table tr td:eq(6) > .PrintReport').hide();
}
如果你能發佈的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')
總得來看但這應該工作:通過與各。每排http://jsfiddle.net/thomas4g/aAQNC/4/ 環......
$("#table tr").each(function() {
$(this).children("td:eq(6) > .PrintReport").hide();
});
我認爲你應該使用每個()爲它的每一行工作。請試試這個(只是它寫在了蒼蠅和未測試):
$('#table tr td:eq(4) > span').each(function(){
if ($(this).html() == "0") {
$(this).closest("tr").find('.PrintReport').hide();
}
});
壁櫥只會尋找前行的當前行。 – Vivek 2011-06-08 12:02:12
$('#table tr').each(function() {
var text = $('td:eq(4) > span', this).text();
if(text=='0')
$('td:eq(6)').find('+.PrintReport').hide();
});
$('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
所有TD有PrintReport類? – Vivek 2011-06-08 11:59:26
你可以給我們你的問題在jsfiddle? – Vivek 2011-06-08 11:59:51
@Vivek是所有人都有這個類 – Shahin 2011-06-08 12:04:04