2

我正在尝试选择除某个 div 之外的整个文档。我相信下面的代码应该可以工作,但事实并非如此。谁能看到我做错了什么?

$(document:not("#test")).bind('keydown',function(e){
  switch(e.which) {
  case 8:
  $("#status").append("<br/>captured");
  break;
  default:
  break;
  }
});

可搭配的 HTML:

<textarea id="test" ></textarea><br/>
<input type="text" id="message"/>
<div id="status"></div>

我也试过这个的几个变种

//$("*:not(#message)").bind('keydown',function(e){
4

3 回答 3

5

您将对象 ( document) 与 jQuery 选择器 ( :not("#test")) 混合在一起。这使得它的语法无效,因为选择器应该在字符串中。

如果它会运行,您将选择所有文档对象(唯一一个),除了那些id="test"(无,因为文档对象没有 HTML 属性)。

也许您实际上想要选择主体内的所有元素,除了那个 div?

$('body *:not(#test)')
于 2012-10-02T21:49:52.633 回答
1

事件委托应该使这变得简单。

$(document).on("keydown",":not(#message)",function(){
    alert("worky");
});
于 2012-10-02T21:52:58.373 回答
0

$('*:not(#test)', 'html')应该适用于您的选择器,如果您的#test 是 div,您可以将 * 替换为例如 div,这样会更快,并且 jquery 不会无用地检查所有控件。

于 2012-10-02T22:00:14.023 回答