2

JQuery JsTree プラグインの子ノードに ajax ロードを使用しています。ロードされたノードを Web ブラウザーで再度開いた場合、すべての子ノードを更新する必要があります。

4

3 に答える 3

4

このようなものを使用して、閉じるときに新しいクラスがノードに追加され、開くときにノードが更新されます。クラスが存在する場合。したがって、on close_node 部分を削除し、開いたときに更新する必要があるノードに独自のクラス名を追加できます

$(function () {
    var tree_id="#jstree"
    var ajax_again="to-be-refreshed";

    $(tree_id).bind("open_node.jstree close_node.jstree", function (e,data) {
        var currentNode = data.args[0];
        if(e.type === "close_node") {
            currentNode.addClass(ajax_again);
        }   
        if(e.type === "open_node") {
            if (currentNode.hasClass(ajax_again)) { 
                var tree = $.jstree._reference(tree_id);
                tree.refresh(currentNode);
            }  
        }
    })  .jstree({

または、開いているすべてのノードが更新されている場合は、簡易バージョンを使用できます

$(function () {
    var tree_id="#jstree"

    $(tree_id).bind("open_node.jstree close_node.jstree", function (e,data) {
        var currentNode = data.args[0];
        if(e.type === "open_node") {
            var tree = $.jstree._reference(tree_id);
            tree.refresh(currentNode);
        }
    })  .jstree({
于 2012-06-21T01:21:19.653 に答える
2

None of above codes worked for me. Below is my code that it works:

$('.tree-container').on('close_node.jstree', function (event, data) {
    var tree = $.jstree.reference('.tree-container');
    tree.refresh(data.node);
});
于 2018-07-14T09:56:38.210 に答える