jQuery.offset()设置position:absolute。我需要的位置:固定

时间:2013-02-06 13:20:58

标签: javascript jquery

当您使用jQuery.offset({coords})设置元素的偏移时,它还会将CSS属性position设置为absolute

但是,我有一个div,我在CSS中设置为position: fixed,我希望它保持这种状态,即使在使用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将position设置为fixed而不是absolute,或者告诉它设置偏移量而不设置CSS属性position的值。

2 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:2)

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

jquery的

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

未经测试,但我认为这样可行。