0

我想将显示值设置block为所有<td>.subjectGroupCompare ,其余设置为“无”。整天都在尝试-eek。看起来应该很简单。

$("#SFGPage").children("table").eq(1).find("td").each(function() {
   var $td = $(this);
   if ($(".subjectGroupCompare")[0]) { 
       $td.css("display", "block"); 
   } else { 
       $td.css("display", "none");
   }
});
4

4 回答 4

1

我想,你想检查是否$td有课程subjectGroupCompare,如果有,那么你需要这个

if($td.hasClass('subjectGroupCompare')) {
    $td.css("display", "block"); 
}
else { 
   $td.css("display", "none");
}
于 2013-07-24T01:19:24.133 回答
1

你的if说法有误。

您必须检查特定节点是否具有subjectGroupCompare该类。你可以检查它

$td.hasClass("subjectGroupCompare")

所以最后,你的代码看起来像这样

$("#SFGPage").children("table").eq(1).find("td").each(function() {
   var $td = $(this);
   if ($td.hasClass("subjectGroupCompare")) { 
       $td.css("display", "block"); 
   } else { 
       $td.css("display", "none");
   }
});
于 2013-07-24T01:20:02.043 回答
0

我将我的选择器依赖于你的代码,所以如果你想显示 block/none td 你可以试试这个

这将隐藏所有没有类 .subjectGroupCompare 的 td

$("#SFGPage").children("table").eq(1).find("td:not(.subjectGroupCompare)").css("display", "none");

显示所有类 .subjectGroupCompare

$("#SFGPage").children("table").eq(1).find("td.subjectGroupCompare").css("display", "block");

我想你也可以使用.hide().show()

于 2013-07-24T01:31:08.700 回答
0

为什么不让 jQuery 做更多的工作呢?代码更简洁,它提供了使用 jQuery 进行优化的机会,它更有可能被优化/热点,而不是您手动编写循环和“if”条件。

像这样的东西:

var table = $("#SFGPage").children("table").eq(1);
var tds = table.find("td");
tds.filter( ".subjectGroupCompare").css( "display", "block");
tds.not(    ".subjectGroupCompare").css( "display", "none");

正如@ehdv 所说,在表格单元格上设置 display:block 可能存在问题。您可以调查这些问题并自行调整解决方案。

于 2013-07-24T01:37:36.610 回答