【问题标题】:NoUiSlider On Event firing multiple timesNoUiSlider On 事件多次触发
【发布时间】:2015-02-10 03:48:34
【问题描述】:

我每次使用滑块更改值时都会显示通知,第一次更改会创建一个通知,但之后会创建多个通知而不是一个。有什么想法可以阻止这个吗?感谢您提供的任何帮助,我在下面包含了我的代码。

每次移动滑块时都会触发此事件。

$("#single-slider").on({

        change: function () {
            $("#single-slider").Link('lower').to(Notification);
        }
    });

它绑定到我的通知功能,让我可以传递值并显示如下所示的消息。

function Notification(value, type) {
console.log(value);
var tFormat = value;
$.jGrowl(' Refresh rate for ' + type + ' changed to ' + tFormat, { life: 10000, header: '<i class="fa fa-comment-o fa-2x"></i>' });

}

但是,它不是创建一个通知,而是创建多个通知。

【问题讨论】:

  • 您可能正在将更改事件绑定到另一个事件中,您使用的滑块不是内置了change 事件吗?
  • 确实如此,change: 函数是滑块更改事件。这就是为什么我不明白为什么它会发射多次。
  • 上面的代码没有问题。这是一个演示:jsfiddle.net/2py6oz04 我假设您不止一次添加了监听器。

标签: javascript jquery jgrowl nouislider


【解决方案1】:

您发布的代码很好 (http://jsfiddle.net/2py6oz04/)。您可能不止一次添加了侦听器。

尝试使用

$('#single-slider').off("change");

之前

$("#single-slider").on({
    change: function () {
        $("#single-slider").Link('lower').to(Notification);
    }
});

如此处所示:http://jsfiddle.net/2py6oz04/1/ 我添加了一个侦听器,将其取下并再次添加。如果您删除 off 行,您会收到两个警报。

另外,在$("#single-slider").on 之前添加一个console.log() 来记录它被添加了多少次。理想情况下,您应该解决根本问题,而不仅仅是关闭现有的侦听器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多