0

我目前正在使用onepage_scroll.js 插件

main.onepage_scroll({
    loop: false,
    animationTime: 750,
    pagination: false
});

以及使用 Ajax 来获取新内容 - 但是当添加 ajax 请求时,不会针对新内容更新 onepage_scroll 的功能。

我尝试在 ajax 成功时再次运行 onepage_scroll 插件,这似乎是一个糟糕的性能选择,而且有点 hack-y,但它获得了我能够实现的最接近的成功。

beforeSend: function() {
    $('<span class="loading"></span>').hide().prependTo('body').fadeIn(300);
    main.addClass(removingClass);
    setTimeout(function() {
        main.empty();
    }, 750);
},
success: function(data, textStatus, xhr) {
    setTimeout(function() {
        $('.loading').remove();
        main.html(data).removeClass().removeAttr('style');
        main.onepage_scroll({
            loop: false,
            animationTime: 750,
            pagination: false
        });
    }, 750);
}

如您所见,在再次调用插件之前,我必须删除添加的类(通过 onepage_scroll)并删除所有内联样式(也是 onepage_scroll)。

除了 hacky 之外,这让关键事件(向上键向上滚动,向下键向下滚动,空格向下,shift+空格向上)运行多次,每次我调用 ajax 时额外滚动一个面板请求(即:2 个 ajax 请求导致一次按键滚动 3 个面板)。

有没有办法自动将 onepage_scroll 功能添加到新添加的 ajax 内容中,而无需再次调用整个插件?或者可能是在ajax调用后保留原始按键功能的一种方法?

谢谢你的帮助!

4

1 回答 1

0

感谢大家的快速响应 - 所要做的就是解除所有 keydown 功能的绑定:

$(document).unbind('keydown');

每当我调用 onepage_scroll 插件时,我都会运行它,一切都很好!

于 2015-07-07T22:00:22.610 回答