我正在开发一个围绕SignalR构建的项目,然后JavaScript将数据附加到元素。
$("#" + div).html(html);
我遇到的问题是我每隔2秒呼叫一次服务器
$.connection.hub.start().done(function () {
chat.server.send("0", 1);
setInterval(function () {
chat.server.send("0", 1);
}, 2000);
});
这意味着它会更新每个div,每次服务器返回数据时,我一直在寻找一种方法来让JavaScript只处理更新元素,如果返回的数据发生了变化,我有两种方法可以去关于这样做。
从div获取HTML内容并进行比较,但这是有缺陷的,因为不同的浏览器返回不同的HTML,所以这是一个没有
第二种方法是将内容存储在全局变量中,当它再次运行时,将全局与当前进行比较,如果它是不同的更新
然而,我正在寻找可能为我处理这个内容的JavaScript,目前我正在使用.html但是当我更多地研究它时,我发现它首先执行.empty()并重新附加数据我正在寻找一些只有在不同的情况下才能更新的东西。
- 编辑 -
项目当前的设置方式是我有一个包含需要显示内容的不同属性的类,例如
public class MyClass {
public List<DivOneContent> Content1;
public List<DivTwoContent> Content2;
}
在服务器端,我可以获取内容并填充类
public void Send(string tab, string subTab = null)
{
MyClass data = PrepareModel(tab, subTab);
Clients.Client(Context.ConnectionId).broadcastObject(data);
}
当这被转回客户端时,我有JavaScript函数,它接受其中一个属性并根据需要附加
// First param is the content and the second one is the div ID
devious.htmlStringBuilder.buildContentOne(data.Content1, "Content1");
在函数中,我只是循环并构建一个字符串,并使用.html
将这样的字符串附加到div