Jquery 拆下div+;它在Firebase数据库中的索引,并在容器中添加新的div
我是Firebase的新手,我开始在一个聊天室工作,除了一件事之外,它还能正常工作。我想对要显示的消息数量设置一个上限,我已经用限制(13)完成了这项工作。下一部分是我不太明白怎么做。。当上限为13时,我希望从聊天中删除第一条消息(Jquery 拆下div+;它在Firebase数据库中的索引,并在容器中添加新的div,jquery,firebase,Jquery,Firebase,我是Firebase的新手,我开始在一个聊天室工作,除了一件事之外,它还能正常工作。我想对要显示的消息数量设置一个上限,我已经用限制(13)完成了这项工作。下一部分是我不太明白怎么做。。当上限为13时,我希望从聊天中删除第一条消息(#messagesDiv div:nth child(1)),并将其从Firebase数据库中删除。另外,当我删除第一条消息时,我希望同时在列表底部添加新消息。我试过查看Firebase文档,但没有找到任何接近我想要实现的目标。如果问题含糊不清,请让我知道如何更清楚地
#messagesDiv div:nth child(1)
),并将其从Firebase数据库中删除。另外,当我删除第一条消息时,我希望同时在列表底部添加新消息。我试过查看Firebase文档,但没有找到任何接近我想要实现的目标。如果问题含糊不清,请让我知道如何更清楚地回答。谢谢你的帮助
dataAddQuery = myDataRef.startAt().limit(13); //<-- Maximum messages displayed
dataAddQuery.on('child_added', function(snapshot) {
var message = snapshot.val();
displayChatMessage(message.name, message.text);
});
dataRemoveQuery = myDataRef.endAt().limit(1); //<-- Does this remove the 1st message?
dataRemoveQuery.on('child_removed', function(snapshot) {
var message = snapshot.val();
removeChatMessage(message.name, message.text);
//Tried to call displayChatMessage here but that didn't work the way I wanted
});
$('#messageInput').keypress(function (e) {
if (e.keyCode == 13) {
var name = $('#nameInput').val();
var text = $('#messageInput').val();
myDataRef.push({name: name, text: text});
$('#messageInput').val('');
}
});
function displayChatMessage(name, text) {
$('<div/>').text(text).prepend($('<b/>').text(name+': ')).appendTo($('#messagesDiv'));
};
function removeChatMessage(name, text) {
$('#messagesDiv div:nth-child(1)').remove();
}
dataAddQuery=myDataRef.startAt().limit(13)// 我不再试图将视图和数据都限制在13个项目上,而是只关注数据。如果可以将子对象的数量限制为13,则可以简单地显示所有子对象
我写道:
我只需将子元素的id
设置为Firebase ref的name
即可识别HTML中的子元素
我希望流动是明确的,如果不检查垃圾箱,让我知道 我不完全清楚您的用例。是否要将视图限制为仅显示13条消息?或者您想将Firebase限制为只包含13条消息吗?如果可能的话,两者都可以,因为我不想存储旧消息。然后我将不进行查询。如果您有超过13个孩子,只需检索所有孩子并从Firebase中删除最大的孩子(ren)。我会写一个简单的例子。真是聪明的解决方案。。我带着一个溢出:自动;显示超过13个,但这个解决方案,我一定会在我的其他项目中使用。谢谢
var childnames = [];
ref.on('child_added', function(snapshot) {
// display child
childnames.push(snapshot.name());
if (childnames.length > 13) {
ref.child(childnames[0]).remove();
childnames = childnames.slice(1);
}
});
ref.on('child_removed', function(snapshot) {
list.removeChild(document.getElementById(snapshot.name()));
});