这个JS创建了一个Smooth滚动,它与jQuery 1.11.1一起工作,但是与jQuery 1.12.3打破了。将它与Wordpress站点一起使用,并且不希望加载两个版本的jQuery。
无法确定要更新的内容,以使其再次发挥作用。
<!--smooth scroll to anchors-->
<script>
(function($){
var jump=function(e){
if (e){
e.preventDefault(); //prevent the "normal" behavior which would be a "hard" jump
var mytarget = $(this).attr("href"); //get the target
}else{
var mytarget = location.hash; //sets the target to the anchor part of a URL
}
$('html,body').animate( //perform animated scrolling
{
scrollTop: $(mytarget).offset().top - 100 //get top-position of target-element and set it as scroll target and move down 100px for fixed nav
}, 1000,function(){ //scrolldelay: 2 seconds
location.hash = mytarget; //attach the hash (#jumptarget) to the pageurl
});
}
$('html, body').hide()
$(document).ready(function(){
$('a[href^=#]').bind("click", jump);
if (location.hash){
setTimeout(function(){
$('html, body').scrollTop(0).show()
jump()
}, 0);
}else{
$('html, body').show()
}
});
})(jQuery)
</script>
<!--End smooth scroll-->
答案 0 :(得分:0)
jQuery 1.12.x不喜欢a[href^=#]
没有引号#。
它会抛出无法识别的表达式错误。
建议始终使用引号。
$('a[href^="#"]').bind("click", jump);
此外,所有jquery版本中的scrolltop都存在问题。 $(..)。offset()为空。当您的href为#
或链接到不存在的ID时会发生这种情况。您还应该检查它不是外部链接,然后返回,否则preventDefault将阻止它工作。