如果在其外部点击隐藏div

时间:2012-11-22 14:36:21

标签: javascript jquery

我对这个JQuery函数有点麻烦。

基本上,我有一个div,点击后会显示另一个Div。实际上,它设置为切换,因此当您单击时它会打开/关闭。

如果你点击打开的div之外的任何地方(在你点击第一个div之后出现),我想把它放在哪里,打开的div就会关闭。

$("#idSelect").click(function() {
   $("#idDiv").toggle();
});

4 个答案:

答案 0 :(得分:6)

编辑:这里有一个更好的方法:
 How to create a custom modal popup - and how to close it clicking outside of it

<小时/> jsBin demo

$( "#idSelect" ).click(function( e ) {
   e.stopPropagation();
   $("#idDiv").toggle();
});

$( "#idDiv" ).on('click',function( e ) {
     e.stopPropagation();
});

$( document ).on('click', function( e ) {
   if( e.target.id != 'idDiv' ){
       $( "#idDiv" ).hide();
   }   
});

答案 1 :(得分:1)

希望这会有所帮助:

$(document).click(function() {
   if($(window.event.target).attr('id') != 'idSelect')
       $("#idDiv").hide();
});

答案 2 :(得分:1)

$(document).on("click",function(e) {
   if ($(e.target).is("#idDiv, #idDiv *"))
       $("#idDiv").show();
   else
       $("#idDiv").hide();
});

答案 3 :(得分:1)

jQuery-outside-events插件增加了对以下事件的支持

  

clickoutside,dblclickoutside,focusoutside,bluroutside,   mousemoveoutside,mousedownoutside,mouseupoutside,mouseoveroutside,   mouseoutoutside,keydownoutside,keypressoutside,keyupoutside,   changeoutside,selectoutside,submitoutside。

适用于您的案例,您可以

    $("#idDiv").on("clickoutside", function( ) {
        $("#idDiv").hide();
    });

    $("#idSelect").on("click", function( e ) {
        $("#idDiv").toggle();
        e.stopPropagation();
    });

演示here