0

我正在尝试使用 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);
  });    
}

正如您所看到的,它从元素的 html 加载数据chart.php?live=true并将其与元素的 html 进行比较,然后仅在实际更新数据时才更新它(具有闪烁效果)。我必须从 html 中删除所有空格。

此代码适用于除 IE 之外的所有浏览器。所以我发明了一种看起来更稳定优雅的新方法。使用 PHP,我生成一些哈希码并通过<meta>标签传递它:

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

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

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

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

4

1 回答 1

0

用这个:

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

筛选():

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

有关更多演示和示例:

jQuery API 上的 filter()

于 2013-01-03T12:49:21.010 回答