这是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?
我想要做的是,如果加载的内容不同,则显示它,否则不显示它。
答案 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)