2011-12-01 59 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以獲得更多有用/有針對性的答案。