slimScroll destroy不会解除滚动事件的绑定

Alv*_*aro 3 javascript jquery slimscroll

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

例如,如果您尝试销毁插件然后滚动以前可滚动的内容,则网站滚动功能将停止工作.您将能够使用滚动条滚动,而不是使用鼠标滚轮/触控板.

这是bug的复制品

请注意以下几点:

  • 使用鼠标滚轮/触控板在先前可滚动的元素上滚动会阻止滚动.
  • 在先前可滚动元素之外滚动按预期工作.
  • 如果在销毁之前将slimScroll滚动到底部,则在销毁它时,它可以在任何场合正常工作.

我已经在存储库中报告了它,但没有给出答案.它似乎被抛弃了.我尝试了不同的建议解决方案,但它们都没有正常工作.

缺乏一种破坏插件的正确方法似乎是问题所在......

在jsfiddle中使用的代码:

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

$('.destroy').click(function(){
    $('.scrollable').slimScroll({
        destroy:true
    });
});
Run Code Online (Sandbox Code Playgroud)

小智 8

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

$('.destroy').click(function(){
    $('.scrollable').slimScroll({
        destroy:true
    });

    var $elem = $('.scrollable'),
    events = jQuery._data( $elem[0], "events" );

    if (events) {
        jQuery._removeData( $elem[0], "events" );
    }

});
Run Code Online (Sandbox Code Playgroud)