如何比较jQuery中的字符串

How to compare strings in jQuery

本文关键字:jQuery 字符串 比较 何比较      更新时间:2023-09-26

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

也许比较.text()比(可能生成的)html更好。

所以你有

$("#events").text() == $(data).text()

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

可以使用firebug或开发人员工具在if语句中放置断点并检查值吗?

或者,你可以只是抛出几个警报,看看这些包含什么…例子:

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

也就是说,如果您不熟悉firebug或开发人员工具的使用,现在可能是开始使用它们的好时机。它们将在将来为您省去很多麻烦,并且在调试时它们比警报要好得多。

您确定空格是相同的吗?设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,以获得更多有用的/有针对性的答案

如果您的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);
});