现在系统有一个弹出的日期选择窗口, 要求在窗口弹出后, 点击窗口以外的地方,窗口要隐藏
解决方法代码
$("#dateimg").click(
function(event){
new Calendar(null, null, 0).show($("#dateinput")[0],$("#dateimg")[0]);
event.stopPropagation();
}
);
$("html").bind("click", function(){
if($("#__calendarPanel").is(":visible")){
$("#__calendarPanel").hide();
}
});
$("#__calendarPanel").bind("click", function(event){event.stopPropagation();});
__calendarPanel是弹出窗口的div id
实际上就是在整个页面范围内绑定点击事件,
dateimg是图片, 点击它就会弹出窗口,之所以加
event.stopPropagation();
是为了阻止事件向上传播到html,假如传播到html的话 窗口一弹出马上又会隐藏的
$("#__calendarPanel").bind("click", function(event){event.stopPropagation();});
这句是说在窗口内部阻止事件向上传播, 阻止html的click事件,不然窗口就没法用了,因为一点就会隐藏,
但是在我自己的代码中,没有加这句话也没事,应该是因为弹出的div里面包着的是一个iframe, 我的点击实际上发生在ifame里, 那么html .click事件没有绑到iframe上?!
本文讨论了如何在点击页面外隐藏弹出的日期选择窗口,通过使用JavaScript阻止事件传播并确保窗口正常显示与操作。重点在于理解事件传播机制及如何在不同元素间正确绑定事件处理。
4204

被折叠的 条评论
为什么被折叠?



