浏览器兼容性问题的jquery实现

时间:2013-07-24 01:14:50

标签: jquery

我想将block的所有<td>的显示值设置为.subjectGroupCompare 其余的都是'无'。一整天都在努力。似乎应该很简单。

$("#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 个答案:

答案 0 :(得分:1)

我想,您想检查$td是否有subjectGroupCompare类,如果有,那么您需要这个

if($td.hasClass('subjectGroupCompare')) {
    $td.css("display", "block"); 
}
else { 
   $td.css("display", "none");
}

答案 1 :(得分: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");
   }
});

答案 2 :(得分:0)

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

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

$("#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()

答案 3 :(得分:0)

为什么不让jQuery做更多的工作呢?代码更清洁&amp;它为jQuery提供了优化的机会,它更有可能被优化/热点化,而不是你编写一个循环&amp; '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所说,设置显示可能会出现问题:阻止表格单元格。你可以调查这些问题&amp;自己调整解决方案。