我正在尝试将一个字符串(已完成)替换为另一个字符串(C),该字符串位于从jquery POST返回的某些HTML的表格单元格中。 POST正常工作,我能够找到我的字符串,但将其设置为新字符串似乎没有做任何事情(没有错误,但原始字符串在我的页面中呈现)。以下是我的代码。有任何想法吗?注意注释掉的行是我最初尝试用来执行查找/替换的行,然后在我无法使用它时使用indexOf:
$.post(myURL, "", function(data){
$(data).find("#ReportOutput tr td").each(function(index) {
//$(":contains('Completed')", this).css('backgroundColor', '#006600').css('color','white').html("C");
// the above is not working, not sure why. Below is workaround
if ($(this).html().indexOf("Completed") > 0) {
alert("found it. " + $(this).html());
$(this).html("C");
}
});
$(data).find("#ReportOutput").appendTo('#divdetails');
});
有谁可以指出我做错了什么?
答案 0 :(得分:0)
如果您在替换之前将结果附加到DOM,我认为它将起作用:
$.post(myURL, "", function(data){
$(data).find("#ReportOutput").appendTo('#divdetails');
$("#ReportOutput tr td").each(function(index) {
if ($(this).html().indexOf("Completed") > 0) {
$(this).html("C");
}
});
});
问题是你正在尝试替换不属于DOM的字符串,所以很可能它只能在副本上工作,从不编辑原始的data
字符串。
答案 1 :(得分:0)
尝试替换它:
$(":contains('Completed')", this).css('backgroundColor', '#006600').css('color','white').html("C");
用这个:
$(this).filter(":contains('Completed')").css('backgroundColor', '#006600').css('color','white').html("C");
答案 2 :(得分:0)
另一个注意事项,如果字符串中的“Completed”排在第一位,那么if语句就不会发生。改为使用-1作为比较。
if ($(this).html().indexOf("Completed") != -1) {