如何在jquery中捕获任何点击事件
How to catch any click event in jquery
我有一个按钮,当它被点击时,会显示一个带有图像的div(就像聊天的表情面板(。如果我再次点击它,div会隐藏,但我想做的是:如果div已经显示,然后我点击页面上的任何其他东西,我想隐藏它
$("myBtn").click(function(){
// show div
});
$(document).click(function(){
// hide div
});
当单击"myBtn"时,div会自动显示并隐藏。我该怎么修?
谢谢你抽出时间。
您可以尝试以下操作:
$(document).on('click', function(evt) {
if(!$(evt.target).is('#my-id')) {
//Hide
}
});
更新
只是为了让你有一个完整的工作集:
$('#mybutton').on('click', function(evt) {
$('#mydiv').show();
return false;//Returning false prevents the event from continuing up the chain
});
在显示原始<div>
的同时,向页面添加一个新的<div>
,该页面的样式/css设置如下:
.ui-widget-overlay {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
z-index: 100;
}
确保原始的<div>
(您希望能够在不关闭它的情况下单击它(具有较高的z-index
,但页面上的其他所有内容都具有较低的z索引。
当您将新的div添加到页面中时,给它.ui-widget-overlay
类,并添加一个点击处理程序来拦截该<div>
上的点击。添加带有点击处理程序的覆盖div如下所示:
$('<div class="ui-widget-overlay">')
.click(function() {
$('.ui-widget-overlay').remove();
$('selector-for-original-div').hide();
})
.appendTo('body');
这一切的结果是:你有两个div。第一个是你想要显示的内容,允许用户在不关闭它的情况下点击,第二个是第一个下面的一个不可见的div,它占据了整个浏览器窗口,这样,如果用户点击了上面的div之外的任何地方,它就会截获点击事件。在单击事件中,删除隐藏的div并隐藏原始div。
更新
假设元素显示时有一个类"活动",它将是:
$('html').click(function(e){
if(!$(e.target).attr("id") == "my-id") {
}
});
<script type="text/javascript">
$('body').click(function() {
if($("div").is(':visible')){
$("div").hide();
}
});
</script>
这里的$("div"(选择器应该是具有id或类的div,例如:如果<div class="class" id="id">
,则$("div")
将更改为$("div.class")
或$("div#id")
<div class="slControlWrapper">
<div class="slControlLabel">
<asp:Label ID="lblSL" CssClass="lblSL" runat="server">Clickable Label</asp:Label>
</div>
<div class="slControlSeparator">
</div>
<div class="slControlDropDown">
</div>
<div id="wndSL">
This is the hidden content of my DIV Window
</div>
<div id="test">
I am for test click on me
</div>
</div>
$('.slControlLabel, .slControlDropDown').bind('click',function(event){
$('#wndSL').show();
event.stopPropagation();
});
$('html').click(function() {
$('#wndSL').hide();
});
#wndSL {
display:none; background-color: blue; height:500px; width:590px;
}
看看这里:
http://jsfiddle.net/nCZmz/26/
相关文章:
- 获取在谷歌地图上点击的任何点的坐标
- 当我们的设备从纵向模式定向到横向模式时,当地图完全加载时,是否有任何 Map 事件被触发
- 用于动态加载外部JS的任何javascript事件
- 有没有办法订阅 Socket.io 上的任何发出事件
- jQuery 选择没有任何 JS 事件链接的链接,以便 PJAX 仅处理链接
- 阻止正在滚动的元素中的任何 JS 事件
- 在准备就绪之前防止任何点击
- 如何检测页面上的任何点击
- 如何在Highcharts中的点事件函数中获取图表对象
- 使用JavaScript检测页面中的任何鼠标事件
- 在添加任何新事件侦听器之前删除匿名事件侦听器
- 启动工具提示在任何其他事件运行后停止工作
- 如何绘制一个可编辑和可拖动的五边形,并找到是否有任何点在里面
- 捕获当前页面上的任何点击事件并阻止导航
- 打开图层点事件
- 为什么我的按钮不做任何点击时
- 如何在不使用input元素的情况下捕获Vuejs中的任何按键事件
- 当用户单击停止加载按钮时发生的任何Javascript事件
- 如何在jquery中捕获任何点击事件
- 禁用屏幕上的任何点击,并在一段时间或事件后启用它