我正在使用此代码在条件的第六列中隐藏元素(我的意思是如果表的span第四列的文本是“0”)。
但是这段代码适用于第一行表格
如何为目标表的所有行执行此功能?
if ($('#table tr td:eq(4) > span').text() == "0") {
$('#table tr td:eq(6) > .PrintReport').hide();
}
答案 0 :(得分: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')
答案 1 :(得分:2)
$('#table tr').each(function() {
var text = $('td:eq(4) > span', this).text();
if(text=='0')
$('td:eq(6)').find('+.PrintReport').hide();
});
答案 2 :(得分:2)
$('table tr').filter(function () {
return $('td:eq(4) > span', this).text() == "0";
}).find('td:eq(6) > .PrintReport').hide();
更新:如果您正在寻找第4和第6列(在人为测量中),您必须分别使用3和5作为:eq
,因为它适用于0索引。我离开了我的榜样,只是想发出这个警告。
我还添加了一个工作演示: jsFiddle Demo
答案 3 :(得分:1)
要运行,但这应该有效:http://jsfiddle.net/thomas4g/aAQNC/4/ 用.each ...
遍历每一行 $("#table tr").each(function() {
$(this).children("td:eq(6) > .PrintReport").hide();
});
答案 4 :(得分:1)
我认为你应该使用each()来为每一行工作。请尝试这个(只是动态编写而未经测试):
$('#table tr td:eq(4) > span').each(function(){
if ($(this).html() == "0") {
$(this).closest("tr").find('.PrintReport').hide();
}
});