我正在尝试理解这段代码,但它没有任何意义。
单击rescue_from
按钮时,他正在调用调用#open_help
的{{1}},调用jQuery函数来显示帮助div,但如果您在下面看到他正在添加和删除事件侦听器他还打电话给handleOpen()
。他为什么这样做?
他只是这样做来封装hideHelp所以它会等待点击按钮吗?
showHelp()
答案 0 :(得分:1)
让我们将代码简化为最低限度并重新安排一下,看看发生了什么:
$("#help").show(); // Show the help dialog
// If user clicks ANYWHERE (the whole document)
document.addEventListener("click",function __handler__(evt){
hideHelp(); // Hide the help dialog
// Remove myself from the event listener so that this function
// will not be called again when user clicks anywhere:
document.removeEventListener("click",__handler__,true);
},true);
所以基本上它抓住任何地方的任何点击事件(按钮,文本,链接,空格......任何地方)并执行一个隐藏帮助对话框的功能。在执行此操作之后(在原始代码之前),它将自己从click事件处理程序中删除,以便页面上的其他内容可以再次获得点击。
答案 1 :(得分:0)
如果您发现隐藏帮助基本上属于" Click"在用户单击帮助后附加到文档元素上的事件侦听器。这意味着一旦显示帮助信息,您只需点击页面上的任意位置,所显示的内容将再次被隐藏。
stoppropigation和stopImmediatePropogation只是保险,没有别的事情会发生接受他想要的东西。它会阻止所有事件处理程序和父事件处理程序。
然后他删除了" Click"触发show事件时添加的事件侦听器。单击帮助后将再次添加。然后他最后隐藏了帮助元素并等待再次点击帮助。
希望这能回答你的问题。