0

我对jsTreeJavaScriptjQuery函数还是新手。我的问题是我需要刷新标题,所以当我单击 jstree 中的某些节点时,标题将被刷新。

jstree位于applet.jsp中,刷新header的函数位于header.jsp中。

如何调用refresh方法在jstree中进行刷新?

这是我在 applet.jsp 中的 jstree:

 var selected_folder = "folder_${user.defaultFolder}";
    $(document).ready(function() {
        jQuery("#folder_tree").jstree({
            "xml_data" : {
                 "ajax" : {
                     "url" : "<%=request.getContextPath()%>" + "/ListFolder.action" 
                 },
                "xsl" : "nest"
            },
            "ui" : {
                "initially_select" : [ "#folder_${user.defaultFolder}" ]
            },
            "types" : {
                "types" : {
                    "leaf" : {
                        "icon" : {
                            "image" : "<%=request.getContextPath()%>/images/icons/leaf.jpg" 
                        }
                    },
                    "share" : {
                        "icon" : {
                            "image" : "<%=request.getContextPath()%>/images/icons/share.jpg" 
                        }
                    }
                }
            },
            "themes" : {
                "theme" : "msam"
            },
            "plugins" : [ "themes", "xml_data", "ui", "types" ]
        });

        jQuery("#folder_tree").bind('loaded.jstree', function() {
            jQuery("#folder_tree").jstree('open_all');
          });

        jQuery("#folder_tree").bind("select_node.jstree", function(e, data) {
            var haveContent = data.rslt.obj.attr("haveContent");
            if (haveContent === 'false') {
                return;
            }
            var id = data.rslt.obj.attr("id"); 
            id = id.substring("folder_".length);
            parent.content.location.href = "<%=request.getContextPath()%>"
                                                        + "/home/Folder.action?folderID="
                                                    + id;
                                            //alert(data.inst.get_text(data.rslt.obj)); // NODE TEXT


            $.ajax({
                        url : "<%=request.getContextPath()%>" + "/WebContent/home/header.jsp",
                        data :{folderId,id},
                        cache:false,
                        success : function(data){
                        setupTree(data); //put your logic to set tree inside a method called setupTree or whatever you want to call it.
       }
 });
        });

        jQuery("#folder_tree").bind("refresh.jstree", function (event, data) {
            jQuery("#folder_tree").jstree("select_node", selected_folder);
        });


        });

            var tree_select_node = function(id) {
                selected_folder = "#folder_" + id;
                jQuery("#folder_tree").jstree("deselect_all");
                jQuery("#folder_tree").jstree("refresh");
            }

这是在 header.jsp 中刷新标头的方法/函数:

function selectHeaderLink(selectedLinkID) {
            var linkIDArray = new Array('homeLink', 'newFolderLink', 'settingsLink', 'reportsLink');
            resetHeaderLinks(linkIDArray, 'tab_link');
            if(linkIDArray.length > 0) {
                for(var i=0;i<linkIDArray.length;i++) {
                    if(linkIDArray[i] == selectedLinkID) {                  
                        var myLink = document.getElementById(linkIDArray[i]);
                        var row = myLink.parentNode;
                        row.style.height = "28";    
                        row.style.backgroundImage = 'url(../images/bg-topmenu.jpg)' ;                               
                        myLink.style.color = "white";
                        break;
                    } //--end: if-for-if
                } //--end: for-if
            } //--end: if
        }

        function windowOnload(){            
            selectHeaderLink('homeLink');


}

我已经尝试过使用 ajax 请求,但我仍然很困惑将这个 ajax 请求放在哪里。

对不起,我的英语不好。我希望有人能帮助我解决这个问题。

4

1 回答 1

0

我已经找到答案了

jQuery("#folder_tree").bind("select_node.jstree", function(e, data) {
            var haveContent = data.rslt.obj.attr("haveContent");
            if (haveContent === 'false') {
                return;
            }

selectHeaderLink('homeLink');

            var id = data.rslt.obj.attr("id"); 
            id = id.substring("folder_".length);
            parent.content.location.href = "<%=request.getContextPath()%>"
                                                        + "/home/Folder.action?folderID="
                                                    + id;
                                            //alert(data.inst.get_text(data.rslt.obj)); // NODE TEXT

});

我只是将函数放入 jquery n 然后删除函数以集中 js 文件..及其工作..

于 2013-10-07T03:10:31.120 回答