私は非常に奇妙なバグに出くわしました。私はjQueryscrollTopを使用して、.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);
}
突然正常に動作します!でも、本当にアニメート機能を使いたいです。これを実現する方法はありますか?ありがとう!