我正在开发一个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”属性是不好的做法 - 这是否相关?
对于可能出现问题的任何想法,我将非常感激。
干杯,
斯科特
答案 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);
};