如何使用 jquery 启用禁用的事件处理程序
how to enable a disabled event handler with jquery
$("#messageArea").keydown(function(e) {
if((e.which != 13) && (e.keyCode != 27)) {
var $this = $(this);
$this.off();
socket.emit("imTyping");
setTimeout(function() {
$this.on();
}, 2000);
}
});
我正在尝试创建一个聊天应用程序,让一个人知道另一个人何时在打字。此事件处理程序侦听任何按键(enter 和 esc 除外)并向服务器发出 "imTyping" 消息。调用此事件处理程序后,我想禁用(这样我就不会向服务器发送一百万条消息),然后在 2 秒后再次启用它。这没有发生,一旦禁用它,它就会永久禁用它。
此外,我还有 messageArea 元素的其他事件处理程序,所以我只想关闭此处理程序,而不是其他任何处理程序。
在unbinding/rebinding
时提取到命名函数并传入正确的参数
$("#messageArea").keydown(typingKeydown);
function typingKeydown(e) {
if((e.which != 13) && (e.keyCode != 27)) {
var $this = $(this);
$this.off('keydown', typingKeydown);
socket.emit("imTyping");
setTimeout(function() {
$this.on('keydown', typingKeydown);
}, 2000);
}
}
$("#messageArea").keydown(function(e) {
if((e.which != 13) && (e.keyCode != 27)) {
var $this = $(this);
$this.off();
socket.emit("imTyping");
setTimeout(function() {
$this.on();
}, 2000);
}
});
我正在尝试创建一个聊天应用程序,让一个人知道另一个人何时在打字。此事件处理程序侦听任何按键(enter 和 esc 除外)并向服务器发出 "imTyping" 消息。调用此事件处理程序后,我想禁用(这样我就不会向服务器发送一百万条消息),然后在 2 秒后再次启用它。这没有发生,一旦禁用它,它就会永久禁用它。
此外,我还有 messageArea 元素的其他事件处理程序,所以我只想关闭此处理程序,而不是其他任何处理程序。
在unbinding/rebinding
时提取到命名函数并传入正确的参数$("#messageArea").keydown(typingKeydown);
function typingKeydown(e) {
if((e.which != 13) && (e.keyCode != 27)) {
var $this = $(this);
$this.off('keydown', typingKeydown);
socket.emit("imTyping");
setTimeout(function() {
$this.on('keydown', typingKeydown);
}, 2000);
}
}