我在这里有代码的现场演示:LIVE DEMO
我要做的是,当1
单击框时,它应该滚动到第一部分,当2
单击框时,它应该滚动到第二部分,依此类推。但是当我点击数字时,我收到以下错误:
offset().top is null or not an object
我的 JQuery 看起来像:
$(function() {
$(".pointto").mouseover(function() {
$(this).addClass("Hover");
});
$(".pointto").mouseout(function() {
$(this).removeClass("Hover").removeClass("Pressed");
});
$(".pointto").mousedown(function() {
$(this).addClass("Pressed");
});
$(".pointto").mouseup(function() {
$(this).removeClass("Pressed");
});
$(document).on('click', '.Hover, .Pressed, .pointto', function() {
var nn = $(this).attr('id').replace('s', '');
alert('a[name="'+nn+'"]'); //clicking on 1 gives me <a name="01">
t = $('a[name="'+nn+'"]').offset().top; //t = $('a[name="'+nn+'"]').offset().top;
$('body,html').animate({scrollTop:t},800);
});
});
HTML 示例:
<a id="s01" class="pointto">1</a> //clickable link
...
...
...
<a name="01">1. About</a> //target
知道如何解决该错误吗?
更新:[已解决]
$(document).on('click', '.Hover, .Pressed, .pointto', function() {
var nn = $(this).attr('id').replace('s', '');
alert('a[name="'+nn+'"]');
t = $('a[name="'+nn+'"]').offset().top; //t = $('a[name="'+nn+'"]').offset().top;
$('body,html').animate({scrollTop:t},800);
});