5

当您使用它设置元素的偏移量时jQuery.offset({coords}),也会将 CSS 属性设置positionabsolute.

但是,我有一个 div,我position: fixed在我的 CSS 中设置了它,我希望它保持这种状态,即使在使用 jQuery 设置元素的偏移量之后也是如此。

现在,我确定我可以设置偏移量,然后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 设置positionfixed而不是absolute,或者告诉它设置偏移量而不设置 CSS 属性的值position

4

2 回答 2

12

正如我上面评论的那样,在您的情况下,您只需要像这样修改顶部和左侧的 CSS:

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

因为$.offset setter 方法只对left、top 和position 值进行操作,使元素相对于页面(从静态到相对,从固定到绝对)。由于您希望它的位置固定,请直接设置值。

于 2013-02-06T13:39:34.403 回答
2

也许不是那么优雅,但我认为您可以在此之后链接.css()以确保position设置为fixed这样:

jQuery

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

未经测试,但我认为这会奏效。

于 2013-02-06T13:28:27.383 回答