问题只是代码的顺序。当代码被评估时,它实际上更像这样
var target;
$('html, body').animate({
scrollTop: target.offset().top
}, 200);
// assign the correct target
target = $('#if_two');
// scroll!
$('html, body').animate({
scrollTop: target.offset().top
}, 200, function(){
target.css({'border-color': 'red'})
});
这个过程称为变量提升。所以当
$('html, body').animate({
scrollTop: target.offset().top
}, 200);
执行,target
仍然未定义。如果您按以下方式订购代码,它就可以工作。
// assign the correct target
var target = $('#if_two');
$('html, body').animate({
scrollTop: target.offset().top
}, 200);
// scroll!
$('html, body').animate({
scrollTop: target.offset().top
}, 200, function(){
target.css({'border-color': 'red'})
});
这里的小提琴:http:
//jsfiddle.net/TomLee/TwtD9/5/