2010-08-06 85 views
0

我想用另一個字符串(C)替換一個字符串(C),該字符串位於從jquery POST返回的某個HTML中的表格單元格中。 POST工作正常,我能夠找到我的字符串,但將其設置爲新字符串似乎沒有做任何事情(沒有錯誤,但原始字符串呈現在我的頁面中)。以下是我的代碼。有任何想法嗎?注意註釋掉的行是我最初試圖用做查找/替換,然後使用的indexOf當我無法得到它的工作:修改從jQuery POST返回的HTML

$.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'); 
}); 

divdetails就是我的一個div顯示HTML。運行這個時沒有錯誤,並且警報發生時顯示它找到了我的字符串,但是當html加載到div時,它顯示「Completed」字符串。

任何人都可以指出我做錯了什麼?

回答

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字符串。

+0

謝謝。這讓我進一步,雖然現在我看到一些奇怪的東西。在.each循環中,上下文是td,是正確的?所以當我們說「$(this).html(」C「);」我們將td的html設置爲C,對吧?如果我運行該代碼,它將用「C」代替所有的HTML,並且當我的「divdetails」出現時,它所有內容都是「C」。 這有道理嗎? – Steve 2010-08-06 21:03:12

+0

忽視,在我的結束使用錯誤。我有另一個ReportOutput表,一旦我訪問正確的一切,一切都很好。謝謝您的幫助。 – Steve 2010-08-06 21:19:40

0

嘗試更換此:

$(":contains('Completed')", this).css('backgroundColor', '#006600').css('color','white').html("C"); 

與此:

$(this).filter(":contains('Completed')").css('backgroundColor', '#006600').css('color','white').html("C"); 
0

另要注意,如果 「已完成」 至上的字符串中,你的if語句不會發生。相反,使用-1作爲比較。

if ($(this).html().indexOf("Completed") != -1) {