如何在jQuery中比较字符串

时间:2011-12-01 19:13:43

标签: javascript jquery

在这段代码中,我试图用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);
});

4 个答案:

答案 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所期望的值。

您可以使用firebugdeveloper 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以获得更有用/有针对性的答案。