5

要素のオフセットをjQuery.offset({coords})設定すると、CSSプロパティもに設定positionされabsoluteます。

ただし、CSSで設定したdivがあり、position: fixedjQueryで要素のオフセットを設定した後でも、その状態を維持したいと考えています。

さて、おそらくオフセットを設定してposition: fixedから再度設定できると確信していますが、オフセットを設定するときに絶対ではなく固定に位置を設定するようにjQueryに指示する方法があるかどうか疑問に思いました。

HTML

<div class="searchResults">
    ...
</div>

CSS

DIV.searchResults {
    position: fixed;
    padding: 20px;
    background-color: red;
    z-index: 501;
}

jQuery

$("DIV.searchResults").offset({left: 0, top: 0});

レンダリングされたHTML

<div class="searchResults" style="position: absolute; top: 0px; left: 0px;">
    ...
</div>

明らかに、jQueryはスタイル内の位置を設定しているため、CSSクラスの値よりも優先されます。したがって、jQueryにの代わりに設定positionするように指示する方法、またはCSSプロパティの値を設定せずにオフセットを設定するように指示する方法が必要です。fixedabsoluteposition

4

2 に答える 2

12

上でコメントしたように、あなたの場合、必要なのは上下のCSSを次のように変更することだけです:

$("DIV.searchResults").css({left: 0, top: 0});

$.offset セッター メソッドは、左、上、および位置の値のみを操作して、要素をページに対して相対的にするため (静的から相対、固定から絶対)。位置を固定したいので、値を直接設定します。

于 2013-02-06T13:39:34.403 に答える
2

それほどエレガントではないかもしれませんが、このように設定されて.css()いることを確認するために、その後チェーンすることができると思います:positionfixed

jquery

$("DIV.searchResults").offset({
    left: 0, 
    top: 0
}).css("position" : "fixed");

テストされていませんが、うまくいくと思います。

于 2013-02-06T13:28:27.383 に答える