2010-07-05 5 views
2

J'utilise jsTree 1.0. Et que ce code:Comment définir l'ID après la création d'un nouveau noeud jstree?

$(document).ready(function() { 
    $("#folders_tree").jstree({ 
     "core": { 
      "initially_open": ["root"] 
     }, "html_data": { 
      "data": '<?= $folders; ?>' 
     }, "themes": { 
      "theme": "default", 
      "dots": true, 
      "icons": true, 
      "url": "<?= Yii::app()->request->baseUrl ?>/css/jstree/themes/default/style.css" 
     }, "contextmenu": { 
      "items": { 
       "create": { 
        "label": "Create", 
        "action": function (obj) { 
         this.create(obj); 
        }, "_disabled": false, 
        "_class": "add", 
        "separator_before": false, 
        "separator_after": false, 
        "icon": false 
       }, "rename": { 
        "label": "Rename", 
        "action": function (obj) { 
         this.rename(obj); 
        }, "_disabled": false, 
        "_class": "rename", 
        "separator_before": false, 
        "separator_after": false, 
        "icon": false 
       }, "remove": { 
        "label": "Delete", 
        "action": function (obj) { 
         this.remove(obj); 
        }, "_disabled": false, 
        "_class": "delete", 
        "separator_before": true, 
        "separator_after": false, 
        "icon": false 
       }, "ccp": false 
      } 
     }, 

     "plugins": ["themes", "html_data", "ui", "crrm", "contextmenu"] 
    }); 

    /* Callbacks */ 

    var folders = $("#folders_tree"); 

    folders.bind("create.jstree", function (e, data) { 
     var parent_id = data.rslt.parent[0].id; 
     var name = data.rslt.name; 
     var node = data.args[0]; 
     var dataArray = { 
      "ref_folder": parent_id, 
      "name": name 
     }; 
     var dataString = JSON.stringify(dataArray); 
     $.ajax({ 
      type: 'POST', 
      url: '<?= Yii::app()->createUrl(' 
      ajax/createfolder ') ?>', 
      data: { 
       data: dataString 
      }, success: function (jdata) { 
       var json_data = JSON.parse(jdata); 
       // Here's! This code is not working. Id is not set. 
       $(node).attr("id", json_data.new_id); 
      }, dataType: 'text' 
     }); 
    }); 
});  


$(node).attr("id", json_data.new_id) // this code is not working. 

Je suis coincé sur ce :(Comment puis-je définir cette id

+0

"ne fonctionne pas" est pas beaucoup d'une description de l'erreur. Peux-tu être plus précis? – Tomalak

+0

L'attribut Html "ID" du noeud créé n'est pas défini sur id qui est stocké dans json_data.new_id. – andser

Répondre

3

La variable de nœud doit être déclarée comme:

var node = data.rslt.obj; 

Et appelé comme:

node.attr("id", json_data.new_id); 
0

je ferais alert(jdata) dans le rappel de succès

?.

Assurez-vous que le serveur renvoie un JSON sécurisé et que l'attribut réel new_id existe.

+0

Oui. C'est existe. La réponse est: {"new_id": "node1106"} – andser

+0

Ensuite, 'node' n'est pas l'élément que vous voulez. –

+0

Mais comment puis-je définir \ get id du noeud? – andser

Questions connexes