我有這樣的事件綁定到我的「身體」:如何防止jquery在textareas內部進行關鍵幀處理?
$('body').bind('keyup', doSomething);
但我想避免內部文本域此事件。當專注於textareas時使用解除綁定事件並在模糊時重新綁定成本太高。有另一種方法可以做到嗎?
哦,我也試過:
$('body:not(textarea)').bind('keyup', doSomething);
,但沒有工作。
感謝
我有這樣的事件綁定到我的「身體」:如何防止jquery在textareas內部進行關鍵幀處理?
$('body').bind('keyup', doSomething);
但我想避免內部文本域此事件。當專注於textareas時使用解除綁定事件並在模糊時重新綁定成本太高。有另一種方法可以做到嗎?
哦,我也試過:
$('body:not(textarea)').bind('keyup', doSomething);
,但沒有工作。
感謝
浮現在腦海中的兩種方法是:
event.target
做什麼,如果它是一個textarea
textarea
元素上添加第二個處理程序,以停止keyup事件的傳播。實際代碼:
// 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/
你可以添加一個單獨的處理器到停止事件的傳播textarea的:
$('textarea').bind('keyup', function (e) {
e.stopPropagation();
});
我從來雖然綁定到體內KEYUP。我會不同走近它,就像這樣:
$('*').not('textarea').bind('keyup', doSomething);
這不起作用,因爲它不從textarea的冒泡停止事件... – nnnnnn