jscrollpane在AJAX调用后不会重新初始化

jscrollpane won't reinitialise after ajax call

本文关键字:初始化 AJAX 调用 jscrollpane      更新时间:2023-09-26

我一直在试验jscrollpane。

我正在尝试将一些 ajax 内容添加到窗格中并让它呈现内容,但由于某种原因重新初始化失败。

我相信我正在遵循此处解释的内容,但也许我用于处理 json 数据的 vk 模板遇到了问题。

我已经在页面上有了这个div。

 <div id="INTERNAL-line_item_detail" class="fl scroll-pane">
 </div>

当事情开始时它是空的,但是如果我放入一些lorem ipsum,我可以看到jscrollpane工作正常,至少一开始是这样。

然后我发出这个 ajax 请求来获取一个 json 对象然后使用 vktemplate 将其放入 html 中。

$.ajax({
    type: "POST",
    url: "queries/INTERNAL_get_order_info.php",
    data: "num=" + num,
    dataType: "json",
    success: function (data) {
        //some of this is not exactly the way it is SO question I referenced
        //I've been moving things around quite experimentally
        api = $("#INTERNAL-line_item_detail").data('jsp');
        $("#INTERNAL-line_item_detail").empty();
        $('#INTERNAL-line_item_detail').vkTemplate('templates/get_line_items_template.tmpl?<?=time()?>', data, function () {
         api.reinitialise();
    });
}
});

滚动窗格的 CSS..没有什么不寻常的。

.scroll-pane {
    width: 350px;
    height: 200px;
    overflow: auto;
    margin:15px 30px 15px 30px;
    background-color:#fff;
}

但是每当我在 chrome 检查器中查看滚动窗格时,它都会添加overflow:hidden属性(尽管我无法弄清楚从哪里开始)。而且我认为这并不重要,因为当我关闭它或将其更改为scroll时,我只能在顶部和底部看到普通的mac滚动条。

有什么想法吗?非常感谢!

尝试在模板引擎的回调函数中记录 api 的值,以了解它是否已定义。另外,我认为最好通过调用元素上的jScollPane来调用重新初始化,如下所示:

$('#INTERNAL-line_item_detail').jScrollPane({/*your jsp config*/});

它将保持滚动位置并且是透明的。祝你好运!

>设置api等于具有类scroll-pane类的容器div

并在模板中使用它

function reinitializeJspane(divId, templateUrl, data) {
    api = $('#' + divId).data('jsp');
    $(api.getContentPane()).vkTemplate(templateUrl + "?", data, function () {
        api.reinitialise();
    });
}

谢谢!