我把这个事件绑定到我的'身体':
$('body').bind('keyup', doSomething);
但我想在textareas中避免这个事件。当关注textareas时使用unbind事件,当模糊它们时重新绑定它们会花费太多。还有另一种方法吗?
哦,我也试过了:
$('body:not(textarea)').bind('keyup', doSomething);
但没有工作。
由于
答案 0 :(得分:4)
想到的两种方式是:
event.target
,如果它是textarea
textarea
元素上添加第二个处理程序,以阻止密钥事件的传播。实际代码:
// option 1
$('body').bind('keyup', function(e) {
if (e.target.tagName.toLowerCase()==="textarea")
return;
// your existing non-textarea code here
});
// option 2
$('body').bind('keyup', doSomething);
$('textarea').bind('keyup', function (e) {
e.stopPropagation();
});
选项1的演示:http://jsfiddle.net/XZTaC/
答案 1 :(得分:2)
您可以在textarea中添加一个单独的处理程序来阻止事件的传播:
$('textarea').bind('keyup', function (e) {
e.stopPropagation();
});
答案 2 :(得分:0)
我永远不会为身体绑定身体。我会以不同的方式接近它,就像这样:
$('*').not('textarea').bind('keyup', doSomething);