[英]jQuery to hide a DIV when the user clicks outside of it, but not on perticular one div
[英]JQuery Event for when user clicks outside a div?
每当用户在div之外单击以隐藏该div时,是否可以调用任何事件?
我尝试使用$(document).click()
,但是即使用户单击应该显示div的链接,该调用也会被调用。 因此,单击处理程序事件将显示div,并且$(document).click()
立即将其隐藏,这意味着将永远不会显示div。
有想法吗?
您可以尝试将onclick事件处理函数委派给body元素(或其他合适的父容器),并测试目标元素是否为揭示链接:
$("body").click(function(e) {
if(e.target.id == "idOfLinkToShowDiv") {
$("#idOfTheDiv").show();
} else {
$("#idOfTheDiv").hide();
}
});
$("body").click(function(e) {
$("#idOfTheDiv").toggle(e.target.id == "idOfLinkToShowDiv");
});
其他方式:
$("body").click(function() {
$("#idOfTheDiv").hide();
});
$(".showLink").click(function(e) {
e.stopPropagation();
$("#idOfTheDiv").show();
});
单击任何元素后,请检查该元素的ID是否与您要隐藏的元素匹配。 如果没有,请将其隐藏。
$("*").click(function(){
if(this.id === "hideMe"){
return false;
}
else{
$("#hideMe").hide();
}
});
在jsFiddle上查看演示
是。 显示div之后,只有绑定click事件才能隐藏div(到文档正文)。 然后,在显示的div本身上,捕获click()事件,并防止在div click()上传播。 div外部的任何单击都将隐藏,内部的任何单击都不会冒泡到文档中。
function hideDiv(){
$('#someDiv').hide();
$(document.body).unbind('click',hideDiv);
}
$('#someLink').click(function(){
$('#someDiv').show().click(function(e){ e.stopPropagation(); });
$(document.body).bind('click',hideDiv);
});
一种解决方法是检查单击了哪个元素。
另一个解决方案可能是:
<body>
<div class="infopane"></div>
<div class="wrapper">
content of page
</div>
</body>
所以我可以做:
$('.wrapper').click(function() {
$('.infopane').hide();
});
您正在寻找外部事件插件。 超级好用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.