JScrollPane具有动态高度和动态内容?

时间:2012-06-11 17:07:49

标签: jquery jscrollpane dynamic-content

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

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

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

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

...通过show / hide方法调用,调用reinitialise()方法并允许动态内容。

它无法正常工作 - 在某些点击它可以工作,在其他点击滚动窗格将消失而不是重新出现,反之亦然。

我也尝试将变量“api”设为全局 - 同样的问题。

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

这是......但我仍然遇到与JScrollPane相同的问题。

我曾经读过某个地方,使用html“onclick”属性是不好的做法 - 这是否相关?

对于可能出现问题的任何想法,我将非常感激。

干杯,

斯科特

2 个答案:

答案 0 :(得分:0)

由于我找到here的答案,我写了一个可接受的解决方法。

唯一的缺点是它需要一点CPU工作,但不是不断重新初始化。我尝试使用this调整大小插件,而不是将所有内容放在计时器上,但出于某种原因,有时我会重新初始化两次,这意味着在平滑的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);

});

答案 1 :(得分: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);
};