从jquery.get原始html响应中提取数据

时间:2013-01-03 12:47:01

标签: jquery ajax

我正在尝试使用jQuery创建一个自我更新元素。这是我的代码:

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>标签:

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

所以现在我需要从响应html中提取这些数据。从DOM树中提取它非常容易:

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

但我不能用原始的html响应做同样的事情。我首先尝试使用DOM-ify($(data).find('#hash').attr('hash')),但它不起作用(在控制台日志中只有“未定义”)。我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用它:

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

过滤器():

将匹配元素集合减少到与选择器匹配的元素或通过函数测试。

更多演示和示例:

filter() on jQuery API