2011-05-22 44 views
1

我編程的網站,但我有一個小問題remplace內容...jQuery的:只有當新的內容是不同的

我有被稱爲AJAX每隔X秒刷新內容的PHP文件。這個PHP文件返回一個js文件,這必須改變一個效果的div的html內容...

但是我想改變這個內容,只有當新的不同!否則,我有一個div,它可以刷新效果,即使它是相同的內容!

我這個代碼進行測試:

if ($('#mydiv').html()!=data_insertion) $('#mydiv').fadeTo("fast", 0, function() {$(this).html(data_insertion).fadeTo("fast", 1)}); 

但這種代碼是不是跨瀏覽器......事實上,我data_insertion變量包含一些HTML內容。每個瀏覽器插入它改變屬性順序等。這就是爲什麼,$('#mydiv')。html()永遠不會等於data_insertion ...

答案請?

非常感謝!

+0

可你只需要使用的.text(),或者是不夠的? – 2011-05-22 10:53:25

+0

嗡嗡聲其實,例如,我有data_insertion =「

」; Chrome會插入「
」和IE「
」爲例。因此,即使內容實際上相同,內容仍然是不同的! – guiguidu59 2011-05-22 10:57:19

回答

1

您可以使用附加到元素的結果的本地緩存。 在你的Ajax回調做這樣的事情:

if (jQuery.data($('#mydiv')[0], 'last_data_insertion') != data_insertion) { 
    // Update DOM content 
    $('#mydiv').fadeTo("fast", 0, function() {$(this).html(data_insertion).fadeTo("fast", 1)}); 

    // Reset the local cache 
    jQuery.data($('#mydiv')[0], 'last_data_insertion', data_insertion); 
} 
+0

是的,這是我想要做的...將data_insertion直接與最後一個data_insertion進行比較(而不是使用$('#mydiv')獲取瀏覽器插入的最後一個內容,以驅逐不同解析錯誤等)... – guiguidu59 2011-05-22 11:01:18

+0

我把var last_data_insertion =''; ?因爲正如我所說,這是一個PHP文件通過ajax每X秒獲得... – guiguidu59 2011-05-22 11:02:18

+0

順便說一句,其實,在PHP文件返回,它是像我告訴你的20行。在插入之前,我必須對每一個進行檢查。所以Ajax回調很難嗎? – guiguidu59 2011-05-22 11:05:00

相關問題