如何选择 DOM 中除一个元素之外的所有元素

How to select all the elements in the DOM except one element?

本文关键字:元素 一个 何选择 选择 DOM      更新时间:2023-09-26

我有一个jQuery事件)在页面上的每个DOM元素上触发。现在这很好,但我需要一种方法从 DOM 选择中排除div(也有子div),以防止在它们上触发事件。我已经尝试了jQuery的unbind(),直接在$('#myDiv')not()off(),但事件仍在触发。

触发事件的代码:

$("*").each(function () {
       // here are events bound to every DOM in the page
       $(this).mouseover(mouseover).mouseout(mouseout).click(click);
    });

我也尝试过

$("*:not(#myDiv)").each(function () {
       // events 
       $(this).mouseover(mouseover).mouseout(mouseout).click(click); 
    });

并且仍然无法从 #myDiv 中删除事件。

该 HTML:

 <div id="myDiv">
      <div class="data">
          <!-- -->
      </div>
      <div class="debug">
          <!-- -->
      </div>
      <div class="form">
          <!-- -->
      </div>
 </div>

进行完整 DOM 选择但排除 #myDiv 的最佳方法是什么,以便我能够使用 bind()on() 进行绑定事件?

注意:我不想从 DOM 树中删除 #myDiv,而是将其从选择中排除。

你可以

试试这个

$(function(){
    $('body > *').not('#myDiv')
    .on('mouseover', function(){ //... })
    .on('click', function(){ //... });  
});

举个例子。

试试 .not()

    $("*").not("#myDiv").each(function () {
       $(this).mouseover(mouseover).mouseout(mouseout).click(click); 
    });

尝试以下操作:

$("*:not(#myDiv):not(#myDiv *)")
    .mouseover(mouseover)
    .mouseout(mouseout)
    .click(click)

这不仅会排除 #myDiv,还会排除 #myDiv 的任何子元素(您似乎要这样做)。

如果还想排除子项,则需要明确执行此操作:

$("*:not(#myDiv):not(#myDiv *)")