如何在显示<div>之前测试<div>内容是否已更改</div>

时间:2012-04-13 22:11:21

标签: javascript jquery html ajax

我有一个id为“responsecontainer”的div,我想加载一个页面。如果DIV的内容已更改,则更新DIV,否则保持不变。

这是我的代码,它不起作用;

<script>
$(document).ready(function () {
    $("#responsecontainer").load("qr.asp");
    var refreshId = setInterval(function () {
        $.get("qr.asp?randval=" + Math.random(), function (result) {
            var newContent = $('.result').html(result);
            if (newContent != $("#responsecontainer")) {
                $("#responsecontainer").html(result);
            };
        });
    }, 5000);
    $.ajaxSetup({
        cache: false
    });
});
</script>

2 个答案:

答案 0 :(得分:0)

此:

if (newContent != $("#responsecontainer")) {

应该是这样的:

if (newContent != $("#responsecontainer").html()) {

答案 1 :(得分:0)

我不会依赖.html()表示来进行字符串比较。

浏览器决定如何呈现HTML字符串,如果浏览器决定它应该以不同的方式显示,开发人员将无法进行任何控制。

您应该有一个可以访问每个区间调用的变量,并在旧响应和新响应之间进行字符串比较。

$(document).ready(function () {

    var prev_response;

    $("#responsecontainer").load("qr.asp", function(resp) {
        prev_response = resp;
    });

    var refreshId = setInterval(function () {
        $.get("qr.asp?randval=" + Math.random(), function (result) {

            if (prev_response !== result) {
                prev_response = result;
                $("#responsecontainer").html(result);
            }
        });
    }, 5000);
    $.ajaxSetup({
        cache: false
    });
});