【问题标题】:Trying to understand what is causing this JavaScript bug试图了解导致此 JavaScript 错误的原因
【发布时间】:2014-05-25 19:21:52
【问题描述】:

我有一个 X 元素 onclick 初始化/更新 printControl 如下:

printControl.init(tab, source, location, start_month, end_month, year);

这里是printControl的相关代码:

var printControl = {
  init: function(tab, source, location, start_month, end_month, year) {
    $(".print").click(function() {
      window.print();
    });
  ...
  }
  ...

这是错误。当用户按下.print 元素时,打印菜单会出现一次。但是,如果元素 X 被点击了特定次数而页面没有重新加载,那么当用户按下 .print 元素时,默认的打印菜单将打开该次数。

这是因为每次单击X 时都会初始化一个新的printControl 函数,因此当实际单击.print 时,它会针对这些函数中的每一个运行?或者是发生了其他事情。如果是这样,我该如何重构我的代码来修复这个错误?

【问题讨论】:

    标签: javascript jquery events triggers jquery-events


    【解决方案1】:

    这确实发生了,因为多次绑定到点击事件。要在绑定单击处理程序之前解决此问题,请取消绑定任何现有处理程序

    $(".print").off("click")
    

    【讨论】:

    • 非常感谢...问题是我想的那样吗?
    • @Hubrid 是的,问题是由多次绑定到点击处理程序引起的。它们堆叠在一起,因此如果您将同一个函数绑定两次,那么它会在 click 事件上被调用两次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 2012-12-05
    相关资源
    最近更新 更多