JQuery:如何选择除输入和textarea之外的所有元素? (禁用keydown事件)

我试图在我的jQuery应用程序中禁用退格键,这样它就不会导致浏览器返回页面。 但是,如果输入或textarea元素被聚焦,我不想禁用它,因为我希望退格在那里正常工作。

所以,我想选择任何不是输入或textarea的东西。

这是代码。 问题在于它会触发每个元素,甚至是输入和文本。

$(':not(input, textarea)').keydown(function(e) { if (e.keyCode === 8) { return false; } }); 

我不明白为什么:not()函数不起作用。 有没有更好的方法可以做到这一点?

请注意,如果我删除:not()函数,它可以正常工作。 也就是说,它只会触发input和textarea元素。

编辑:基于接受的答案,这里是有效的代码。 我相信有更好的方法可以做到这一点。

  $(document).keydown(function(e) { var element = e.target.nodeName.toLowerCase(); if (element != 'input' && element != 'textarea') { if (e.keyCode === 8) { return false; } } }); 

您的问题是keydown事件从元素冒泡到包含它的普通元素,从该元素触发事件。

你需要检查e.target

试试这段代码:

 $("*:not(input)")