0

我正在开发一个 Java Servlet,它生成带有包含数据库搜索结果的 div 的网页。

此 div 的高度定义为百分比(动态高度),内容具有显示/隐藏按钮(动态内容)。显示和隐藏功能由 div 元素的“onclick”属性激活。

我首先尝试使用此页面(JScrollPaneDynamicHeight)中的 javascript 来实现动态高度和此方法:

function refreshNav() {  
var pane = $('YOUR SELECTOR');  
var api = pane.data('jsp');  
api.reinitialise();  
}

...由显示/隐藏方法调用,以调用 reinitialise() 方法并允许动态内容。

它不能正常工作 - 在某些点击时它会起作用,在其他点击时滚动窗格会消失而不是重新出现,反之亦然。

我也尝试过使变量“api”成为全局变量——同样的问题。

我尝试使用此处找到的 js 的最新内容(仅不附加段落)。在快速响应和 CPU 活动之间进行权衡,所以我添加了一个 if 语句,它检查一个布尔值,描述内容或高度是否发生了变化。我已经使用“console.log()”来检查一切是否正常工作(布尔值更改、正在执行的 if 语句等)。

它是......但我仍然对 JScrollPane 有同样的问题。

我曾经在某处读到使用 html“onclick”属性是不好的做法 - 这可能相关吗?

我将非常感谢任何关于可能出现问题的想法。

干杯,

斯科特

4

2 回答 2

0

多亏了我在这里找到的答案,我已经写了一个可以接受的解决方法。

唯一的缺点是它需要一点 CPU 工作,但不需要不断地重新初始化。我尝试使用这个调整大小插件而不是把所有东西都放在一个计时器上,但由于某种原因,有时我会让它重新初始化两次,这意味着在平滑的 jquery 显示动画中途它会在滚动条重新初始化时停止一段时间。

呃,好吧。它是这样工作的:

- 每 75 毫秒检查一次窗口高度和容器高度是否有变化 - 如果是这样,滚动条设置为在 100 毫秒后重新初始化 - 如果某物继续调整大小,则重新初始化命令再次重置为 100

$(document).ready(function(){

var windowHeight = $(window).height();
var containerHeight = $('#container').height();
var resized;

setInterval(function(){

    if(windowHeight!=$(window).height() || containerHeight!=$('#container').height())
    {
        clearTimeout(resized);
        resized = setTimeout(function(){api.reinitialise();}, 100);
    }

    windowHeight = $(window).height();
    containerHeight = $('#container').height();

},75);

});
于 2012-06-20T08:28:11.737 回答
0

我还使用了 Mark Coleman 的脚本(感谢 Mark!),它可以工作。

function resizedw() {
        $.each($('.scroll-pane'), function () {
            var api = $(this).data('jsp');
            api.reinitialise();
        });
}
var doit;
window.onresize = function () {
    clearTimeout(doit);
    doit = setTimeout(resizedw, 100);
};
于 2015-06-19T13:17:18.667 回答