HTML DIV的长度不等于AJAX加载的HTML长度

时间:2015-01-20 15:52:25

标签: javascript jquery html ajax

这是HTML:

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <script src="js/jquery.js"></script>
    <script src="js/script.js"></script>
</head>
<body>
<div id="SomeDiv"></div>
</body>
</html>

以下是&#39; script.js&#39;的内容:

$(function() {
    function load_text() {
        $.get('test.html').done(function(data) {
            // Check this condition below.
            if ($.trim($("#SomeDiv").html()).length != $.trim(data).length){
                $("#SomeDiv").html(data);
            }
        });
    }
    setInterval(load_text, 2000);
});

以下是&#39; test.html&#39;的内容:

<div>Hello World!</div>

上面的test.html只有那行代码。因此,每当AJAX加载时,它将返回相同的HTML并反复填充DIV标记。根据if条件,#SomeDiv中的HTML和加载的HTML在第一次之后将不相等它应该是相等的并且不应该重新填充DIV。

但是看起来即使它第一次加载后长度也不同了。这只是打击了我!怎么可能?我正在加载相同的内容,然后我从另一个文件中获取相同的内容,并与之前加载的内容进行比较,但它们不相等......

这是正常的,还是有其他方法可以让它在首次加载后不会填充DIV?

我想要做的是,如果加载的内容不同,则显示它,否则不显示它。

1 个答案:

答案 0 :(得分:5)

注意:由于不正确的包围,您 (编辑前)修剪length:)

您正在将原始文本字符串与&#34;结构化&#34;进行比较HTML(解析元素后可以添加到DOM中,空格可以更改)。

尝试比较像这样的之类的(首先将其转换为DOM元素):

// Need to wrap the incoming elements in a parent
var $data = $('<div>').html(data);
if ($.trim($("#SomeDiv").html()).length != $.trim($data.html()).length)