不需要的事件处理函数正在 jQuery 中执行
Unwanted event handler function is executing in jQuery
我是 jQuery 的新手,我遇到了一些事件处理程序的冗余执行问题。这是我的代码:
$(document).bind('keydown', 'ctrl+c', function(){
console.log("Something is wrong!!!");
});
我根本没有按 Ctrl+C,但我的控制台打印消息的次数与我按任意键的次数一样多。这里有什么缺陷?在此先感谢您的帮助。
您正在将事件绑定到任何 keydown
。您想要使用 keydown
事件,但随后检查以确保您指定的键是被按下的键。 e.ctrlKey
将检查 Ctrl,您可以使用 e.which
来比较另一个键,在本例中为 C
这是一个完整的例子
$(document).bind('keydown', function(e) {
console.log('some key pressed');
if (String.fromCharCode(e.which).toLowerCase() == "c" && e.ctrlKey) {
alert('ctrl+C pressed');
}
});
According to the API,您将 'ctrl+c'
作为事件数据传递给事件处理程序,这意味着回调将在每个 keydown
事件上执行,而您没有使用您传入的 'ctrl+c'
数据用于进行任何密钥检查。
相反,如果您想要检测何时按下某个键并结合 ctrl
,您需要检查事件的 which
和 ctrlKey
属性对象:
...keydown(function (e) {
if (e.which === yourkeycode && e.ctrlKey) {
...do stuff...
}
});
Andrew 的回答是正确的,但是 JQuery 提供直接绑定到 copy/paste/cut 操作,这样更简洁。
$(document).bind('copy', function() {
alert('ctrl+C pressed');
});
我是 jQuery 的新手,我遇到了一些事件处理程序的冗余执行问题。这是我的代码:
$(document).bind('keydown', 'ctrl+c', function(){
console.log("Something is wrong!!!");
});
我根本没有按 Ctrl+C,但我的控制台打印消息的次数与我按任意键的次数一样多。这里有什么缺陷?在此先感谢您的帮助。
您正在将事件绑定到任何 keydown
。您想要使用 keydown
事件,但随后检查以确保您指定的键是被按下的键。 e.ctrlKey
将检查 Ctrl,您可以使用 e.which
来比较另一个键,在本例中为 C
这是一个完整的例子
$(document).bind('keydown', function(e) {
console.log('some key pressed');
if (String.fromCharCode(e.which).toLowerCase() == "c" && e.ctrlKey) {
alert('ctrl+C pressed');
}
});
According to the API,您将 'ctrl+c'
作为事件数据传递给事件处理程序,这意味着回调将在每个 keydown
事件上执行,而您没有使用您传入的 'ctrl+c'
数据用于进行任何密钥检查。
相反,如果您想要检测何时按下某个键并结合 ctrl
,您需要检查事件的 which
和 ctrlKey
属性对象:
...keydown(function (e) {
if (e.which === yourkeycode && e.ctrlKey) {
...do stuff...
}
});
Andrew 的回答是正确的,但是 JQuery 提供直接绑定到 copy/paste/cut 操作,这样更简洁。
$(document).bind('copy', function() {
alert('ctrl+C pressed');
});