【发布时间】:2016-07-27 15:28:54
【问题描述】:
我试图理解这段代码,但它没有任何意义。
当单击#open_help 按钮时,他正在调用handleOpen(),它调用showHelp(),它调用jQuery 函数来显示帮助div,但是如果你在下面看到他正在添加和删除一个事件侦听器,并且他还调用@987654324 @。他为什么这样做?
他这样做是为了封装 hideHelp 以便等待按钮被点击吗?
// listen to "help" button
$('#open_help').bind("click",handleOpenHelp);
function handleOpenHelp(evt) {
if (!$("#help").is(":visible")) {
evt.preventDefault();
evt.stopPropagation();
showHelp();
}
}
function showHelp() {
$("#help").show();
document.addEventListener("click",function __handler__(evt){
evt.preventDefault();
evt.stopPropagation();
evt.stopImmediatePropagation();
document.removeEventListener("click",__handler__,true);
hideHelp();
},true);
}
function hideHelp() {
$("#help").hide();
}
【问题讨论】:
标签: javascript jquery closures addeventlistener