2013-01-03 41 views
0

我想用jQuery製作一個自更新元素。這裏是我的代碼:從jquery.get原始HTML響應中提取數據

function chart_readyset() { 
    $.get("chart.php?live=true", function(data) { 
    if(data.replace(/[ \t\r]+/g,"").split('\n').join('') != $("#chart-wrapper").html().replace(/[ \t\r]+/g,"").split('\n').join('')) { 
     $("#chart-wrapper").fadeOut('fast').html(data).fadeIn('fast'); 
    } 
    window.setTimeout(chart_readyset, 5000); 
    });  
} 

正如你可以看到它從chart.php?live=true加載數據,並將其與元素的HTML,然後對其進行更新(有閃爍效果),只有當數據實際更新。我不得不從HTML中刪除所有的空格。

此代碼適用於除IE以外的所有瀏覽器。所以我發明了一種看起來更加穩定和優雅的新方法。用PHP我產生了一些哈希代碼,並使之通過<meta>標籤:所以現在我需要從響應HTML提取此數據

<meta id="hash" hash="25a4f466ee0b2f12fe505dd9a1151456"> 

。從DOM樹中提取它非常容易:

$('#hash').attr('hash'); 

但是我不能對原始html響應做同樣的事情。我試圖DOM-ify第一($(data).find('#hash').attr('hash')),但它不起作用(在控制檯日誌中只有「未定義」)。我究竟做錯了什麼?

+0

順便說一句,用IE問題是由cahing造成的,我這裏的解決方案:http://stackoverflow.com/a/735101/1561204 – Juribiyan

回答

0

使用這樣的:

$(data).filter('#hash').attr('hash'); 

濾波器():

減少匹配的元素的那些選擇器匹配或傳遞函數的測試。

對於更多演示和實例:

filter() on jQuery API

+0

有用。謝謝! – Juribiyan

+0

你忘了做點什麼! –

相關問題