0

私はまだjsTreeJavaScript、およびjQuery関数に慣れていません。私の問題は、ヘッダーを更新する必要があるため、jstree の特定のノードをクリックするとヘッダーが更新されることです。

jstree は applet.jsp にあり、ヘッダーを更新する関数は header.jsp にあります。

jstree内をリフレッシュするためにrefreshメソッドを呼び出すにはどうすればよいですか?

これは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 に答える