我有一个表,我需要在数据绑定发生后更改。在我们测试IE8之前,我做得很好。在那个浏览器上,它失败了。实质上,第三方控件将呈现为2个表。第一个表包含网格的标题(包括排序/过滤/分组选项),第二个表包含数据本身。我需要“改变”标题,添加一个“主标题”行,用TD元素和A元素上的一些我自己的类来扩充。整个jQuery函数如下所示:
function onDataBound(e) {
var grid = $(this).data("tGrid");
if ($(this)[0].id.indexOf("open") != -1)
grid = $("#open tbody")[0];
else
grid = $("#closed tbody")[0];
var tb1 = $(grid).html();
if (tb1.indexOf("<tr><td") == -1 && tb1.indexOf("<TR><TD") == -1 && tb1.indexOf("<TR>\r\n<TD") == -1) {
// Lower case
tb1 = tb1.replace(/<th class=/g, "<td class=");
tb1 = tb1.replace(/th>/g, "td>");
// Upper case
tb1 = tb1.replace(/<TH class=/g, "<td class=");
tb1 = tb1.replace(/TH>/g, "td>");
$("td.t-header").each(function() {
var text = $(this).html();
text = text.replace("t-header", "t-header rr-header rr-header-text");
$(this).html(text);
});
$("a.t-link").each(function () {
var text = $(this).html();
text = text.replace("t-link", "t-link rr-link");
$(this).html(text);
});
//tb1 = tb1.replace(/t-header/g, "t-header rr-header rr-header-text");
//tb1 = tb1.replace(/t-link/g, "t-link rr-link");
tb1 = tb1.replace("Project ID", "Project<br/>ID");
tb1 = tb1.replace("Risk ID", "Risk<br/>ID");
tb1 = tb1.replace("Managing Department", "Managing<br/>Department");
tb1 = tb1.replace("Cost Impact", "Cost<br/>Impact");
tb1 = tb1.replace("Schedule Impact", "Schedule<br/>Impact");
tb1 = tb1.replace("Probability of Occurance", "Probability<br/>of<br/>Occurance");
tb1 = tb1.replace("Responsible Party", "Responsible<br/>Party");
tb1 = tb1.replace("Due Date", "Due<br/>Date");
tb1 = tb1.replace("Cost Severity", "Cost<br/>Severity");
tb1 = tb1.replace("Schedule Severity", "Schedule<br/>Severity");
tb1 = "<tr><td colspan='7' class='rr-header rr-risk-identification'>RISK IDENTIFICATION</td>" +
"<td colspan='3' class='rr-header rr-risk-assessment'>RISK ASSESSMENT</td>" +
"<td colspan='2' class='rr-header rr-risk-mitigation'>RISK MITIGATION</td>" +
"<td colspan='2' class='rr-header rr-severity-index'>SEVERITY INDEX</td></tr>" +
tb1;
$(grid).html(tb1);
}
}
我正在尝试在 IE8 上运行时获取以下代码(片段)。到目前为止,我没有运气。这是我的原始代码(上面的代码段),在IE9及以上版本,Chrome,FireFox等中运行良好 - 但在IE8中不起作用:
tb1 = tb1.replace(/t-header/g, "t-header rr-header rr-header-text");
tb1 = tb1.replace(/t-link/g, "t-link rr-link");
我也尝试过这样做(也是上面的代码片段):
$("td.t-header").each(function() {
var text = $(this).html();
text = text.replace("t-header", "t-header rr-header rr-header-text");
$(this).html(text);
});
$("a.t-link").each(function () {
var text = $(this).html();
text = text.replace("t-link", "t-link rr-link");
$(this).html(text);
});
我使用正则表达式替换的结果如下:
正如你所看到的,第一个TD正确替换,但其余的都做了怪异的!使用EACH循环只是简单失败。
有什么想法吗?
答案 0 :(得分:1)
如果您只是想修改类列表,是否可以直接在每个循环中设置类名?
$("td.t-header").each(function() {
this.className = "t-header rr-header rr-header-text";
});
此处列出了使用Jqueries切换类的另一种解决方案: