首先,焦点/模糊通常仅适用于input
元素。他们不会为div
元素开火。
您需要在div
单击文档时将其隐藏,但在单击文档div
本身或其中的任何内容时则不需要。为此,请向文档添加一个点击处理程序,然后停止对div
DOM 树的点击,如下所示:
$(document).ready(function() {
$("#my_account_button").click(function() {
$("#c_fancy").css({'display' : 'block'});
$("#my_account").slideDown("Slow");
});
$("#hide_account").click(function() {
$("#c_fancy").css({'display' : 'none'});
$("#my_account").slideUp("Slow");
});
$(document).click(function() {
$("#c_fancy").css({'display' : 'none'});
$("#my_account").slideUp("Slow");
});
$("#c_fancy").click(function(e) {
e.stopPropagation();
});
});
然后,您可能希望合并隐藏代码并将其放在一个通用函数中:
$(document).ready(function() {
$("#my_account_button").click(function() {
$("#c_fancy").css({'display' : 'block'});
$("#my_account").slideDown("Slow");
});
function hideAccount() {
$("#c_fancy").css({'display' : 'none'});
$("#my_account").slideUp("Slow");
}
$("#hide_account").click(hideAccount);
$(document).click(hideAccount);
$("#c_fancy").click(function(e) {
e.stopPropagation();
});
});
我确实注意到背后的内容div
变暗了。如果这个变暗的覆盖是您#c_fancy
元素的一部分,这可能会导致问题。如果是这样,您需要稍微更改代码。基本上,您需要将上面的代码从 更改为$(document)
,当然要适当地$('#myOverlay')
替换。#myOverlay