嘿伙计我是jquery的绝对新手,这里是我的第一个脚本之一,它基本上假设在滚动到特定的部分时添加动画,小提琴是here。
我在jquery中的滚动代码是:
$('nav a[href^="#"]').on('click', function (e) {
e.preventDefault();
$('nav a').each(function () {
$(this).removeClass('active');
})
$(this).addClass('active');
var target = this.hash,
menu = target;
$target = $(target);
$('html, body').stop().animate({
'scrollTop': $target.offset().top
}, 500, 'swing', function () {
window.location.hash = target;
});
});
现在我只知道JS中的基本调试,因此我在脚本中找到的唯一错误是target
未定义。我从一个在线啧啧得到这个脚本,它在那里工作得很好,但我不知道为什么这里不起作用。
我无法理解作者添加未定义变量的意图。
有人可以指出我做错了什么吗?可以找到原始教程代码here。
TY。 亚历-Z
答案 0 :(得分:2)
您可能希望为html, body
设置动画,而不是动画.content
:
$('.content').animate({
'scrollTop': $target.offset().top
}, 500, 'swing', function () {
window.location.hash = target;
});
<小时/>
在此代码中:
var target = this.hash,
... this
指的是点击的a
元素,hash
指的是其网址。
所以对于这个元素:
<a href="#ex-1">Example-1</a>
... this.hash
将是#ex-1
。
$target = $(target);
...现在相当于:
$target = $('#ex-1');
...指的是div
id
。
.content
滚动到div
的最高位置。