95

1 つの div () 以外のページ上の任意の場所をクリックしたときに関数をトリガーするにはどうすればよいid=menu_contentですか?

4

6 に答える 6

158

イベントが id の div によって生成された場合、ドキュメントに適用clickして処理bodyをキャンセルできます。これにより、イベントが単一の要素にバインドされ、例外を除くすべての要素とのバインドが保存されます。clickclickmenu_contentclickmenu_content

$('body').click(function(evt){    
       if(evt.target.id == "menu_content")
          return;
       //For descendants of menu_content being clicked, remove this check if you do not want to put constraint on descendants.
       if($(evt.target).closest('#menu_content').length)
          return;             

      //Do processing of click event here for every element except with id menu_content

});
于 2012-09-30T14:00:30.987 に答える
50

jQuery Event Targetのドキュメントを参照してください。イベント オブジェクトの target プロパティを使用すると、#menu_content要素内のどこでクリックが発生したかを検出できます。発生した場合は、クリック ハンドラーを早期に終了できます。.closest()の子孫で発生したクリックの場合を処理するには、 を使用する必要があります#menu_content

$(document).click(function(e){

    // Check if click was triggered on or within #menu_content
    if( $(e.target).closest("#menu_content").length > 0 ) {
        return false;
    }

    // Otherwise
    // trigger your click function
});
于 2012-09-30T14:04:29.737 に答える
46

これを試して

 $('html').click(function() {
 //your stuf
 });

 $('#menucontainer').click(function(event){
     event.stopPropagation();
 });

場外イベントもご利用いただけ ます

于 2012-09-30T14:00:12.330 に答える
1

これを試すことができます:

$(":not(#menu_content)").on("click", function(e) {
    e.stopPropagation();
    // Run your function when clicked anywhere except #menu_content
    // Use with caution, 'cause it will prevent clicking on other elements
});

$("#menu_content").on("click", function(e) {
    e.stopPropagation();
    // Run when clicked on #menu_content
});
于 2021-06-11T17:30:33.423 に答える