单击页面上除页面外的任何位置时隐藏图层

时间:2012-10-10 10:17:56

标签: jquery html

$('body').click(function() {
//hide layer code here
});

这会隐藏图层。

但是当我点击图层内部/上面时,我不希望隐藏图层。

请帮忙。

4 个答案:

答案 0 :(得分:1)

我认为更优雅的方式是:

$('body').click(function(event) {
// hide layer code here
});
$('#layer').click(function(event) {
event.stopPropagation();
});

答案 1 :(得分:0)

$('body').click(function(ev){
    if(ev.target.className == 'yourLayerClass') {
        // Your code here
    }
});

答案 2 :(得分:0)

你可以尝试这样的事情。

$(document).ready(function () { 
            $('body').click(function(e) {
                if(e.target.id !== 'layer') {
                    alert('Put code to hide layer here');
                }

            });
        });
    </script>


<body>
<p id='layer'>This is layer</p>
<p id='other'>This is other part </p>
</body>

Demo

此外,您可以创建叠加层(标准方式)

HTML

<body>
<div id='overlay'></div>
<p id='layer'>This is layer</p>
</body>

JS

$('#overlay').click(function(e) {
    alert('code to hide your layer'); 
    // Notice that this function won run when you click on layer but will run whenever you on any other part of body.
});​

Demo

答案 3 :(得分:0)

获取图层的ID。例如:#layer

并将此代码放入您的脚本文件中:

$('#layer').on('click', function (event) {
event.stopPropagation();
});