【发布时间】:2013-07-23 21:25:07
【问题描述】:
我的 jQuery 代码表现得很奇怪。每次我单击提交时,它都会不断发布同一消息的额外副本。例如:
Hello 3
Hello 3
Hello 3
Hello 2
Hello 2
Hello
有人知道为什么会这样吗?到目前为止,这是我的代码:
jQuery(function ($) {
var socket = io.connect();
var $messageForm = $('#sendmessage');
var $messageTitle = $('#title');
var $messageBox = $('#message');
var $chat = $('#chat');
$messageForm.click(function (e) {
if ($.trim($("#title").val()).length === 0) {
alert('You must provide valid input');
$messageTitle.val('');
$messageBox.val('');
return false;
}
if ($.trim($("#message").val()).length === 0) {
alert('You must provide valid input');
$messageTitle.val('');
$messageBox.val('');
return false;
} else {
e.preventDefault();
socket.emit('send message', '<b>' + $messageTitle.val() + '</b>' + ' - ' + $messageBox.val());
$messageTitle.val('');
$messageBox.val('');
}
socket.on('new message', function (data) {
$chat.prepend(data + "<br/>");
});
});
});
【问题讨论】:
-
是不是因为您在点击事件中执行
socket.on('new message',,因此多次绑定到它,导致每次连续点击将其点击次数添加到聊天区域?我不熟悉socket.on -
几乎可以肯定。
标签: javascript jquery socket.io