用于正文中所有项(不包括特定父项中的项)的jQuery选择器

用于正文中所有项(不包括特定父项中的项)的jQuery选择器,jquery,jquery-selectors,Jquery,Jquery Selectors,假设这是DOM: <body> <h1>Hello World</h1> <div class="tooltip"> <div class="tooltip-hd"> This is a Tooltip for header. </div> <div class="tooltip-bd"> Some more info

假设这是DOM:

<body>
    <h1>Hello World</h1>
    <div class="tooltip">
       <div class="tooltip-hd">
         This is a Tooltip for header.
       </div>
       <div class="tooltip-bd">
         Some more info about header
       </div>
    </div>

    <div class="container">
       <h2>Subheading</h2>
       <div class="tooltip">
         <div class="tooltip-hd">
           This is a Tooltip for header.
         </div>
         <div class="tooltip-bd">
           Some more info about header
         </div>
       </div>

       <p>Contents inside subheading</p>
    </div>

</body>

你好,世界
这是标题的工具提示。
有关页眉的更多信息
副标题
这是标题的工具提示。
有关页眉的更多信息
副标题内的内容

我想选择body内的所有子对象,不包括“tooltip”类下的子对象


$(“body”).find(“*”).not(“.tooltip”)将选择项

我不确定您为什么要这样做,但下面的方法会起作用(尽管我认为它的性能不太好,因为它会过滤body中的所有内容):

这将排除具有类
.tooltip
的所有元素,以及具有类
.tooltip
的祖先的所有元素,因此您将得到以下结果:


h1,div.container,h2,p

您想要
.tooltip
元素本身吗?这听起来是个糟糕的问题解决方案。为什么需要此项?不需要工具提示父项。但我想知道我是否也可以跳过这个。你的最终目标是什么?可能有一种更简洁的方法来实现它。最终的目标是禁用除特定父节点下的节点之外的所有节点上的单击事件。
var items = $('body').find('*').filter(function() {
  return !$(this).is('.tooltip') && !$(this).closest('.tooltip').length;
}).get();