使用AJAX调用jQuery平滑scoll中断

时间:2016-04-25 16:31:41

标签: jquery ajax wordpress smooth-scrolling

我已经搜索过了,我已经搜索了这个问题的原因。但每次我搜索时都会得到“如何添加平滑滚动”。这不是问题。我有一个wordpress设置,平滑滚动在每个实例中都可以正常工作,除了JS文件附加的结果。

$(document).ready(function(){
function descriptions(){
    var apiCall = '[APIRUL]';

    $.ajax({
        url: apiCall,
        type: 'get',
        dataType : 'json',
        success: function(data){
            $.each(data, function(i, p) {
                var name = p.name;
                var namelc = p.namelc; //lowercase
                var description = p.description;
                var output = '<div id="' + namelc + '"><h3">' + name + '</h3><p>' + description + '<br /><a href="#table">back to top</a></p></div>';

                $('#description').append(output);
            });
        },
        error: function(xhr, status, error) {
            console.log(error);
        }
    });
}descriptions();
});

一切都很好。 jQuery或AJAX本身没有问题。但由于某种原因,“a href =”#table“”“跳回”表(在描述上方)并添加哈希地址(例如http://example.com/somepage/#anchor)而不是放松它(就像在同一页面上的每一个其他锚链接一样。即平滑滚动没有任何问题。还有其他东西在干扰)。

我确信这种行为有解释和解决方案。但是我找不到它,因为正如我之前提到的,每当我搜索“平滑滚动不工作”时,我最终会得到大量“如何添加平滑滚动”的结果。

非常感谢任何帮助,无论是正确的还是正确的方向。 /卡住!

2 个答案:

答案 0 :(得分:1)

如果您正在使用来自h ere的JQuery Smooth滚动,则看起来它像听众一样处理。如果使用AJAX注入,则该链接上将没有侦听器。重新运行绑定 - 类似这样:

$('#description a').smoothScroll();

代码中的这一行:

$('#description').append(output);

答案 1 :(得分:0)

所以,感谢Peter Mark的回答(谢谢你!真的。我已经被困在这一天超过一天了。如果没有你的帮助就会更长,那肯定是!)我明白发生了什么事这有助于解决问题。现在,无需通过层文件来查看初始平滑滚动的来源(监听器的调用内容),这是一个可行的解决方案。将那个漂亮的平滑滚动带回所有jQuery附加元素:D

$('a').click(function(){
    $('html, body').animate({
        scrollTop: $(this.hash).offset().top
    },350,'easeInOutExpo');
    return false;
});

像Peter解释的那样,这需要进入 AFTER 追加(否则我们只会针对现有的锚点,而不是我们正在创建/注入附加的新锚点)。