jquery选择除div及其子元素之外的所有元素

Dim*_*los 8 css jquery jquery-ui toggle selector

我有这个html/css代码:

<body>
        <!-- BEGIN: HEADER AREA -->
        <?php require("snippets/header_area.php"); ?>
        <!-- END: HEADER AREA -->
        <div id = "presentation_area">
            <div id = "submenu_area">
                <div id = "sliding_menu_area">
                </div>
                <div id = "tags">
                    <div id = "1">
                        <img src = "lang/el/images/1.png" />
                    </div>
                    <div id = "2">
                        <img src = "lang/el/images/2.png" />
                    </div>
                    <div id = "3">
                        <img src = "lang/el/images/3.png" />
                    </div>
                    <div id = "4">
                        <img src = "lang/el/images/4.png" />
                    </div>
                </div>
            </div>
        </div>
    </body>
Run Code Online (Sandbox Code Playgroud)

我试图在用户点击除了之外的所有其他内容时触发一个函数#sub_menu_area.我使用js的以下部分:

$('*').not('#submenu_area').click(function(){
        if(slide == "open"){
            $('#sliding_menu_area').toggle(effect);
            slide = "close";
        }
    });
Run Code Online (Sandbox Code Playgroud)

不幸的是,孩子们不会被排除在外,而且点击它会翻转很多次.有谁知道如何正确地做到这一点?!:)

编辑: 所以我需要的是一个jquery选择器来正常:on click of all elements of body EXCEPT for #submenu_area and its descendants.

小智 17

试试这个:

$(document).click(function(e) {
        if ($(e.target).is('#submenu_area, #submenu_area *')) {
            return;
        }
        if(slide == "open"){
            $('#sliding_menu_area').toggle(effect);
            slide = "close";
        }
    });
Run Code Online (Sandbox Code Playgroud)


Ell*_*lle 5

用这个:

$('*').not("#submenu_area *").click(function() { ... });
Run Code Online (Sandbox Code Playgroud)

  • *仅*排除“ #submenu_area”。它不排除任何后代(“子代”)。 (2认同)