在这段代码中,我试图用jQuery比较两个字符串。 div的当前内容和新内容,从(当前)静态页面加载。
但它不起作用,当加载的内容与当前内容相同时,它仍会加载新内容......
当我查看内容变量时,它们确实相同(我使用了JS警报)。
$(document).ready(function () {
var refreshId = setInterval(function () {
$.get("ajaxGetEvents.aspx", function (data) {
if ($('#events').html() != data) {
$('#events').fadeOut('slow', function () {
$(this).load('ajaxGetEvents.aspx').fadeIn('slow');
});
} else {
alert("item is equal");
}
});
}, 5000);
});
答案 0 :(得分:3)
也许最好比较.text()
而不是(可能生成的)html
所以你有
$("#events").text() == $(data).text()
答案 1 :(得分:0)
如果您的ajax请求返回普通文本字符串(不是html格式),我认为您应该使用text()
而不是html()
。
$(document).ready(function () {
var refreshId = setInterval(function () {
$.get("ajaxGetEvents.aspx", function (data) {
if ($('#events').text() != data) {
$('#events').fadeOut('slow', function () {
$(this).load('ajaxGetEvents.aspx').fadeIn('slow');
});
} else {
alert("item is equal");
}
});
}, 5000);
});
答案 2 :(得分:0)
我怀疑您没有获得$('#events').html()
和data
所期望的值。
您可以使用firebug或developer tools在if语句中放置断点并检查值吗?
或者你可以抛出几个警告,看看它们包含什么......例如:
alert($('#events').html());
alert(data);
if ($('#events').html() != data) {
也就是说,如果您不熟悉使用firebug或开发人员工具,现在可能是开始使用它们的好时机。它们将在未来为您节省许多麻烦,并且在调试方面它们比警报要好得多。
答案 3 :(得分:0)
你确定空白是一样的吗?我们假设data
是<span >test</span>
:
var data = "<span >test</span>";
// Temporarily place your data in a DOMElement to trigger parsing and re-serialization
alert(data===jQuery('<div>').append(test).html());
正如您将看到的,上面的代码会导致false
。原因是单词span
后面的空格。构建DOM树会删除这样的空格,并且调用html
无法恢复它们。
请注意,这个答案只是猜测。请发布您的HTML以获得更有用/有针对性的答案。