Javascript 函数在绑定而不是单击时执行

Javascript 函数在绑定而不是单击时执行,javascript,jquery,coffeescript,Javascript,Jquery,Coffeescript,问题:我正在用单击事件绑定的函数在绑定时启动 我发现其他人也有同样的问题,并找到了一些答案。然而,在实施这些解决方案时,我仍然看到同样的问题。我一定是做错了什么,但我似乎想不出来 发行演示: 在绑定时调用函数的原始代码片段(coffeescript): $("body").bind "click", deviceCloseView 经过一些在线研究,我发现以下是推荐的修复方法,但我仍然遇到同样的问题: $("body").bind "click", -> deviceCloseVi

问题:我正在用单击事件绑定的函数在绑定时启动

我发现其他人也有同样的问题,并找到了一些答案。然而,在实施这些解决方案时,我仍然看到同样的问题。我一定是做错了什么,但我似乎想不出来

发行演示:

在绑定时调用函数的原始代码片段(coffeescript):

$("body").bind "click", deviceCloseView
经过一些在线研究,我发现以下是推荐的修复方法,但我仍然遇到同样的问题:

$("body").bind "click", ->
  deviceCloseView()
更新:有人建议我删除括号,但这似乎并不能解决问题,因为我这样做时它根本不会执行:

$("body").bind "click", ->
  deviceCloseView

我尝试修复此问题时使用的一些参考资料:


中的
设备打开视图
不会停止单击事件的传播。当您将
设备关闭视图
绑定到
主体
时,它也会被相同的点击触发

您需要更改
deviceOpenView
以停止单击事件的传播,以防止这种情况发生

deviceOpenView = (event) ->
  event.stopPropagation();
  // ... your other code

你的活动正在热火朝天。这是一把固定的小提琴:

调用preventDefault、stopPropagation、returnfalse,我刚刚完成了所有操作:)

一些代码:

deviceOpenView = (e) ->
    console.log("open");
    console.dir(e);
    e.preventDefault();
    e.stopPropagation();

似乎无法复制这个<代码>$(“body”).bind“click”,deviceCloseView按预期工作,因为它在“click”上调用函数。确定吗?我已经制作了一个JSFIDLE来演示它,而deviceOpenView正在执行。deviceCloseView没有。在请求帮助之前,您可能需要进行一点调试,只需几次
console.log
calls()就会显示您的代码没有达到预期的效果。单击图像打开它,然后立即关闭它。啊,我明白了,非常感谢。现在阅读更多关于传播的内容,但这很有意义。谢谢,就这样,谢谢。我需要多读一些关于传播的书。