2011-12-01 102 views
1

在这段代码中,我试图用jQuery比较两个字符串。从当前静态页面加载的div的当前内容和新内容。如何比较jQuery中的字符串

但它不工作,当加载的内容是一样的当前内容,但它仍然加载新的内容......

当我查看内容增值经销商,他们真的是相等的(我用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); 
}); 
+1

我们可以看到你的HTML吗?这与asp有什么关系? –

+0

您是否尝试过==而不是!= –

+0

如果您的HTML/Tabs中有任何空格,或者其他任何内容,则显示为false。尝试在两个元素上使用'.text()'。 – Niels

回答

0

我怀疑你没有得到你所期望的$('#events').html()data值。

您可以使用firebugdeveloper tools在您的if语句中放置断点并检查值吗?

或者你可以随便扔在一对夫妇的警报,看看这些包含...例如:

alert($('#events').html()); 
alert(data); 
if ($('#events').html() != data) { 

这就是说,如果你不熟悉使用萤火虫或开发者工具,现在可能是一个开始使用它们的好时机。它们将在未来为您节省很多麻烦,而且在调试时它们比警报更好。

+0

我在加载的页面中创建的html使用'
',而jquery.html()将其转换为'
' –

3

也许是尤为明显的.text()比较(可能产生的)HTML而不是

所以你必须

$("#events").text() == $(data).text() 
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); 
}); 
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以获得更多有用/有针对性的答案。