选择所有div - div hello和children jquery

时间:2013-10-29 20:53:51

标签: jquery

如何选择除div“hola”和childrens

之外的所有元素
     <body>
        <div id="hola">
            <div>example</div>
            <span>example</span>
        </div>
        <div>not selected</div>
        <span>not selected</span>
    </body>

    $(document).ready(function() {
        $(":not(#hola > *)").click(function(){
            console.log("sdf");
        });
    });

http://jsfiddle.net/Mp9f4/

2 个答案:

答案 0 :(得分:2)

我非常确定您不想选择所有其他项目,因为那会包含body

试试这个:

$(function() {
    $("body > *:not(#hola)").click(function(){
        console.log("sdf");
    });
});

它会选择body的所有直系子女,但身份为hola

的子女除外

JSFiddle

答案 1 :(得分:1)

看起来你实际上不想选择所有项目,而是处理任何项目的点击,而不是#hola div中的点击(元素本身及其子项)。

唉,你选择的方式 - 为#hola及其子项之外的所有元素分配单独的点击处理程序,注定会失败,因为点击事件bubble

我建议采用稍微不同的方法:只使用放置在document上的单个事件处理程序(因为您需要监听所有元素的点击),并在此处理程序中检查事件的真实目标。例如:

  $(document).click(function(e) {
     var $target = $(e.target);
     if ($target.is('#hola') || $target.closest('#hola').length) {
       return false;
     }
     console.log('sdf');
   });

JS Fiddle