slimScroll销毁不't取消绑定滚动事件

slimScroll destroy doesn't unbind the scroll events

本文关键字:取消 绑定 滚动 事件 slimScroll      更新时间:2023-09-26

我使用的是slimScroll jQuery插件,似乎destroy选项并没有完全破坏插件在网站上的效果。

例如,如果你试图销毁插件,然后滚动之前可滚动的内容,网站滚动功能就会停止工作。您可以使用滚动条滚动,而不是使用鼠标滚轮/触控板。

这是错误的复制品

注意以下几点:

  • 用鼠标滚轮/轨迹板在先前可滚动的元素上滚动会阻止滚动
  • 在先前可滚动的元素之外滚动可以按预期工作
  • 如果你在销毁它之前滚动slimScroll直到它的底部,当销毁它时,它在任何情况下都能正常工作

我已经在存储库中报告了它,但没有给出答案。它似乎有点被抛弃了。我尝试了不同的解决方案,但没有一个能正常工作。

缺少一个正确的方法来销毁插件似乎是个问题。。。

jsfiddle中使用的代码:

$('.scrollable').slimScroll({
    allowPageScroll: true,
    height: '250px',
    size: '10px',
    alwaysVisible: true
});
$('.destroy').click(function(){
    $('.scrollable').slimScroll({
        destroy:true
    });
});

问题是插件没有删除已注册的事件。这应该可以解决问题:

$('.destroy').click(function(){
    $('.scrollable').slimScroll({
        destroy:true
    });
    var $elem = $('.scrollable'),
    events = jQuery._data( $elem[0], "events" );
    if (events) {
        jQuery._removeData( $elem[0], "events" );
    }
});