2016-05-02 102 views
1

我正在構建一個小型聊天應用程序,以瞭解jQuery和AJAX。 這是所有偉大的工作,但在那一刻,客艙與下面的代碼抓住log.html的HTML在某個區間:在AJAX請求中獲取最後一個div的值

function loadLog(){  
      $.ajax({ 
      url: "log.html", 
      cache: false, 
      success: function(html){  
       $(".chatbox").html(html); //Insert chat log into the #chatbox div 
       }, 
     }); 
    } 

現在,如果用戶試圖複製線,它的小蟲子掉出來因爲每隔幾秒就會刷新一次html。 所以我想構建一個檢查記錄最後一個已知的消息,並將其與日誌中的最後一條消息進行比較。如果它們不匹配(出現了新消息),那麼瀏覽器纔會刷新聊天室中的html。

我對AJAX和Jquery很新,所以我想問你們以下問題: 比較log.html中最後一條消息和chatbox div中最後一個div的最佳方式是什麼?

我的理論將

success: function(html){  
      $(html).find(last(div)); 
      }, 

但我不知道究竟如何獲得最後一個div的價值。

我希望我解釋得很好。 此外,歡迎任何想法:)

P.S.這是log.html線

<div class='msgln'>(4:40 PM) <b>Jeroen</b>: Welcome<br></div> 

回答

1

使用這種方式的一個例子:

success: function(html){ 
    $(html).find(".msgln").last(); 
}, 

如果不工作,那麼你可以做一個假元素和訪問的最後一個項目:

success: function(html){ 
    $("<div />", { 
    html: html 
    }).find(".msgln").last(); 
}, 
0

你可以按照這個

<div id=container> 
    <div id=box1></div> 
    <div id=box2></div> 
    <div id=box3></div> 
    <div id=box4></div> 
    <div id=box5></div> 
    <div id=box6></div> 
</div> 

jQuery代碼

$(document).ready(function(){ 
    $('#container').children().last().attr('id'); 
}); 
0

,你可以:

一)堅持檢索到一個全局變量的數據 - 見here

二)堅持檢索到HTML5本地存儲中的數據 - 見here

然後或者與全局變量或本地存儲進行比較,如果它是新數據,則覆蓋它。

這比每次進行ajax調用時都要找到數據要好。

+0

你能以什麼樣的方式是更好的解釋?在性能或易用性方面更好嗎? – Alterlai

+0

@Alterlai在性能方面更好。由於數據存儲並且很容易獲得,所以在通過DOM進行搜索以找到它時沒有開銷。特別是因爲你計劃每隔幾秒鐘執行一次搜索。如果還有其他進程在同一時間發生,比如播放GIF,它可能會給瀏覽器帶來壓力,並且會出現可見的副作用,例如瞬間死機或抖動動畫。 – Dom

+0

好的謝謝你的解釋,我會給它一個鏡頭! – Alterlai

0

可以使用

$last_div = $(html).find("div").last(); 
    text = $last_div.text(); 

參考 看到https://api.jquery.com/last/

+0

這就是我寫的相同的代碼。 –