使用append时复制内容的DOM
DOM duplicating the content when using append
如果我这样做,我有一个div可以很好地工作:
$('#chat').innerHTML(data.sticker);
使用上面的代码,它会替换我以前的贴纸,但我不希望我以前的标签消失。
因此,我这样做:
$('#chat').append(data.sticker);
上面的代码所做的是…它复制了我的数据。例如,如果我点击我的"贴纸1",贴纸1就会显示,当我再次点击它时,第二次"贴纸1"会显示3次。。。1是前一个,2是新的,如果我第三次点击它,它会显示6个stcikers。。。3是前一个,3是新的。任何身体都能帮上忙吗?
我的index.html:
function which_sticker(image){
var clickedElement;
var $chat = $('#chat');
var socket = io.connect();
if(image=='1'){
clickedElement = '<img src="stickers/angry/1.png" height="90" width="90"/>';
}
console.log(clickedElement);
socket.emit('send sticker', clickedElement);
socket.on('get sticker', function(data){
console.log(data.sticker);
$('#chat').append('<span class="msg"><b><span id="name_title">' + data.nick + '</span></b><br />' + data.sticker + '<br>');
});
}
<img src="stickers/angry/1.png" onClick="which_sticker('1');" height="90" width="90"/>
之所以会发生这种情况,是因为每当用户点击元素时,你都会在getsticker的套接字上一次又一次地分配事件,所以每次点击事件都会注册多次,所以第一次它有一个注册的函数,第二次有两个,然后是。
在这里,您需要清除事件侦听器,或者只需在页面期间注册一次。。。。我给你举了下面第二个例子。我已经将事件注册代码从点击事件处理程序中移出
var socket = io.connect();
socket.on('get sticker', function(data){
console.log(data.sticker);
$('#chat').append('<span class="msg"><b><span id="name_title">' + data.nick + '</span></b><br />' + data.sticker + '<br>');
});
function which_sticker(image){
var clickedElement;
var $chat = $('#chat');
if(image=='1'){
clickedElement = '<img src="stickers/angry/1.png" height="90" width="90"/>';
}
console.log(clickedElement);
socket.emit('send sticker', clickedElement);
}
相关文章:
- 使用Clipboard.js复制span文本
- ZeroClipboard-在复制之前添加到值
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 使用append时复制内容的DOM
- 是否可以将一个DOM元素转换为另一个?或者从中复制所有属性
- 将属性从 DOM 节点复制到 dijit 小部件中
- 使用Javascript复制DOM中的节点
- 复制预加载的HTML/DOM方法会产生一个使用AJAX/PHP的数组
- 复制DOM节点jQuery(非引用)
- Insert使用GSAP将SVG元素复制到DOM中
- Javascript是否可能复制DOM中的元素?
- 按值复制Javascript DOM对象
- 从不在 DOM 树中的 jquery 对象复制画布节点
- dom events - 如何将 JavaScript 按钮操作的结果复制到另一个 html 页面上
- 更改变量中复制的dom元素的attr值
- 在DOM中切换HTML元素而不复制HTML
- 如何在IE7中使用jquery从iframe复制元素到主DOM