我非常成功地使用了 ScrollToFixed,一抓。我的内容中有一个扩展的 div,如果扩展了 div,scrollToFixed 端点不会动态增加以适应新的高度。
所以发生的情况是端点保持固定在扩展 div 关闭时最初计算的点。然后 div 将自己固定在中间的某个位置,而不是在 div 展开后应该固定到的位置。
我能想到的最简单的解决方法是在 div 展开后强制 scrollToFixed 重新计算端点,有没有办法做到这一点?
或者当然也欢迎任何其他解决方案!
GitHub 示例说调用trigger('resize')
您的元素,这似乎在执行重新计算时起作用。但是,没有绑定到您的元素的“调整大小”事件。但是窗口上有,这会导致重新计算。
查看插件代码,有一个事件'resize.ScrollToFixed'。所以我监听窗口调整大小事件,这可能会导致我的元素扩大或缩小,并trigger('resize.ScrollToFixed')
在我的元素上做一个。这很好用。
这个问题已经存在两年了,并且给定的解决方案(它们来自 Github 页面)不适用于我在引导程序上扩展的文本区域。
因此,我编写了一个事件侦听器来动态更新限制的插件基础选项。
如果有人有同样的问题,这里是修复:
将此侦听器添加到 scrolltofixed.js,就在第 386 行的 windowScroll 侦听器之后:
$(document).on("changeLimit",
function(e) {
base.options.limit = e.limit;
checkScroll();
}
);
将此触发器放在您的应用程序函数中以设置新的限制值(例如动态文本区域大小更改时):
$.event.trigger({
type: "changeLimit",
limit: $('.page_wizard').offset().top - your offset
});
我不确定它是否有效,但是当扩展完成后执行此操作
jQuery(window).scroll();
你用什么函数来扩展div?能给个插件的链接吗?
@user338128 在正确的轨道上;但是,插件仅在初始化或调整窗口大小时计算或重新计算其“端点”。当 div 扩展或收缩时,调用它:
$(window).resize()
这将导致插件取消其目标,然后重新计算。