我正在构建一个小型聊天应用程序来学习一些关于jquery和AJAX的知识。 它的工作效果很好,但目前,聊天框正在使用以下代码抓取log.html的HTML:
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中的最后一条消息和聊天室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>
答案 0 :(得分:1)
使用这种方式:
success: function(html){
$(html).find(".msgln").last();
},
如果这不起作用,那么你可以制作假元素并访问最后一项:
success: function(html){
$("<div />", {
html: html
}).find(".msgln").last();
},
答案 1 :(得分: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');
});
答案 2 :(得分:0)
你可以:
a)将检索到的数据保留为全局变量 - 请参阅here
b)将检索到的数据保留在HTML5本地存储中 - 请参阅here
然后与全局变量或本地存储进行比较,如果是新数据则覆盖它。
比每次进行ajax调用时查找数据要好。
答案 3 :(得分:0)
你可以使用
$last_div = $(html).find("div").last();
text = $last_div.text();