我已经搜索过了,我已经搜索了这个问题的原因。但每次我搜索时都会得到“如何添加平滑滚动”。这不是问题。我有一个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)而不是放松它(就像在同一页面上的每一个其他锚链接一样。即平滑滚动没有任何问题。还有其他东西在干扰)。
我确信这种行为有解释和解决方案。但是我找不到它,因为正如我之前提到的,每当我搜索“平滑滚动不工作”时,我最终会得到大量“如何添加平滑滚动”的结果。
非常感谢任何帮助,无论是正确的还是正确的方向。 /卡住!
答案 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 追加(否则我们只会针对现有的锚点,而不是我们正在创建/注入附加的新锚点)。