9

我有一个具有固定高度和滚动条的隐藏 div。我想更改滚动位置,但浏览器不会让我这样做,因为 div 是隐藏的。scrollTop 属性将保持为 0。

另外,我不想显示和隐藏 div,这会导致闪烁。

如果有人知道该怎么做,那将非常有帮助。

谢谢!

4

3 回答 3

3

您可以使用 jQuery 的数据函数保存滚动。

function SaveScroll(val)
{
    $(the_element).data("Scroll", val);
}

function Show()
{
    var element = $(the_element);

    // prevent from showing while scrolling
    element.css
    ({
        position: "absolute",
        top: "-50000px",
        left: "-50000px",
        display: ""
    });

    // Scroll to the position set when it was hidden
    element.scrollTop(element.data("Scroll"));

    // show the element
    element.css
    ({
        position: "",
        top: "",
        left: ""
    });
}

这可能会奏效


您也许可以只使用visibility: hidden而不是display: none. 可见性使元素保持在原处。我相信它与 完全相同opacity: 0,但它是一个跨浏览器的解决方案。

于 2010-06-23T10:53:27.673 回答
2

为了防止 div 闪烁并修复<div>脚本不可用的问题,您可以使用位置隐藏来代替"display: none;"

.hidden {
  position: absolute !important;
  left: -9999px !important;
  top: -9999px !important;
}
于 2010-06-23T10:53:26.483 回答
2

我的问题不完整。div 不是自己隐藏的。它是隐藏的容器 div 的一部分。内部 div 与他的父级一起显示。

<div class="container hidden">
    <div id="some_div">Content</div>
    <div id="my_div">I wanted to scroll this one</div>
    <div id="other_div">Content</div>
</div>

我们使用 jQuery 想出了一个自定义的“onShow”事件。

所以现在我们可以这样做:

$('#my_div').bind('show', function() {
    handle_scrollTopOffset();
});

当 show 事件被绑定时,它将类添加.onShow到 div。并且该jQuery.fn.show()函数已被覆盖以触发具有.onShow该类的孩子的“显示”事件。

感谢大家的建议。很抱歉,我提供了一个不完整的问题。下次我会提供所有细节。

于 2010-06-24T09:57:31.050 回答