我有一个全屏谷歌地图,然后我有一个弹出窗口。我想要的是当我点击除弹出窗口之外的任何内容或者按下esc时弹出窗口消失。
以下代码只能运行一次。我可以打开弹出窗口然后关闭它,但它不会再打开。
var hideBlogContent = function () {
$(document).on('click', function (e) {
if ($(e.target).closest($("#blogpost")).length === 0) {
$("#blogpost").hide();
$(document).unbind();
$(document).off();
}
});
$(document).on('keydown', function (e) {
if (e.keyCode === 27) { // ESC
$("#blogpost").hide();
$(document).unbind();
$(document).off();
}
});
我怎样才能让它每次都有效?
答案 0 :(得分:1)
使用名称空间,check the documentation for on()
查看更多内容..目前,您的.off()
功能正在关闭文档上的所有绑定。但是使用命名空间,您可以关闭特定的事件绑定。
$(document).on('click.closeMap', function (e) {
if ($(e.target).closest($("#blogpost")).length === 0) {
$("#blogpost").hide();
$(document).off('click.closeMap');
}
});
$(document).on('keydown.closeMap', function (e) {
if (e.keyCode === 27) { // ESC
$("#blogpost").hide();
$(document).off('keydown.closeMap');
}
});
此外,unbind()
此处是多余的。