方案一: 监听 document.body 的点击事件,如果来源不在目标范围内则关闭
1 2 3 4 5 6 7 8 9 10 11
| $(document).mouseup(function(e){ var _con = $(' 目标区域 '); if(!_con.is(e.target) && _con.has(e.target).length === 0){ some code... } });
|
方案二: 在弹窗下、所有页面内容上放一个遮罩,点遮罩关闭
方案三: 利用事件冒泡和 setTimeout 跳出事件队列的方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <body> <div id="shard" ></div> <div id="test"> <a href="javascript:;" id="button">clickMe</a> <div id="content" style="display:none">show</div> </div>
<script> $('#shard').hide(); $('#button').on('click',function(){ $('#content').css('display','block'); $('#shard').off('click'); $('#shard').hide(); setTimeout(function(){ $('#shard').show(); $('#shard').one('click',function(){ console.log('click ...'); $('#content').css('display','none'); $('#shard').hide(); }) } , 0); }) </script>
|