我偶然发现了一个非常奇怪的错误。我正在使用 jQuery scrollTop 让窗口滚动到 .extrasWarning 类的位置,只要该类不在窗口的视线范围内。这是以下代码:
$('[data-required] .number select').change(function () {
var number = $(this).closest('.choice_data').data('required'),
windowPos = $(window).height(),
selectedAmount = 0;
alert(windowPos);
$(this).closest('.choice_data').find('.number option:selected').each(function (i) {
selectedAmount = selectedAmount + parseInt($(this).val());
});
if (selectedAmount > number) {
$(this).closest('.choice_data').next('.extrasWarning').show();
var errorPos = $(this).closest('.choice_data').next('.extrasWarning').offset().top;
alert(errorPos);
if (errorPos > windowPos) {
$(window).animate({
scrollTop: errorPos
}, 1000);
}
} else {
$('.extrasWarning').hide();
}
});
当我使用该元素选择另一个选项时,所有事件都会正确触发,但 $(window).animate 函数除外。FireFox 显示以下错误:a.ownerDocument 未定义。
问题在于将 animate 函数与 scrollTop 函数结合使用。如果我实施以下更改:
if (errorPos > windowPos) {
$(window).scrollTop(errorPos);
}
它突然工作正常!但是,我真的很想使用动画功能。知道我怎样才能做到这一点吗?谢谢!