1

フォームを最初のエラーまでスクロールする次のスニペットがあります。

$('html,body').stop().delay(500).animate({scrollTop: $errors.filter(":first").offset().top -30},'slow');

jquery 検証コードの最後の完全なブロックは次のようになります。送信時にエラーが発生した場合は、フォームを最初のエラーまでスクロールします。

var $errors = $(".mcError");
if($errors.size() > 0){
    if(settings.mcScrollToError){
        $('html,body').stop().delay(500).animate({scrollTop: $errors.filter(":first").offset().top -30},'slow');
    }
    return false;
}
else{
    mcResponse('', false);
    return true;
}

$('html,body')しかし、を div class などのコンテナー要素の名前に置き換えると、$('.myDivClass')うまく機能しないようです。ランダムな場所にスクロールするだけです。

コンテナー要素の css は次のようになります (意味がわかります)。

.mcModalWrap1{
position:fixed;
top:0;
bottom:0;
left:0;
right:0;
padding:50px;
background-image:url(images/overlay.png);
overflow:auto;
z-index:999;
display:none;
}
4

1 に答える 1

1

.offset():

ドキュメントを基準にして、一致した要素のセット内の最初の要素の現在の座標を取得します。

ソース: http://api.jquery.com/offset/

.position()相対位置を取得するために使用したい::

オフセットの親を基準にして、一致した要素のセット内の最初の要素の現在の座標を取得します。

ソース: http://api.jquery.com/position

例えば:

$('.myDivClass').stop().delay(500).animate({ scrollTop: ($errors.filter(":first").position().top -30) },'slow');
于 2012-02-08T20:52:43.843 に答える