我有一个具有固定高度和滚动条的隐藏 div。我想更改滚动位置,但浏览器不会让我这样做,因为 div 是隐藏的。scrollTop 属性将保持为 0。
另外,我不想显示和隐藏 div,这会导致闪烁。
如果有人知道该怎么做,那将非常有帮助。
谢谢!
我有一个具有固定高度和滚动条的隐藏 div。我想更改滚动位置,但浏览器不会让我这样做,因为 div 是隐藏的。scrollTop 属性将保持为 0。
另外,我不想显示和隐藏 div,这会导致闪烁。
如果有人知道该怎么做,那将非常有帮助。
谢谢!
您可以使用 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
,但它是一个跨浏览器的解决方案。
为了防止 div 闪烁并修复<div>
脚本不可用的问题,您可以使用位置隐藏来代替"display: none;"
:
.hidden {
position: absolute !important;
left: -9999px !important;
top: -9999px !important;
}
我的问题不完整。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
该类的孩子的“显示”事件。
感谢大家的建议。很抱歉,我提供了一个不完整的问题。下次我会提供所有细节。