2010-10-21 6 views
1

У меня есть jsTree с флажками, которые отображаются просто отлично. Я могу открыть и закрыть узлы, отметьте и снимите флажки и т. Д.jsTree checkbox plugin error

Проблема возникает, когда я пытаюсь установить все узлы, которые были отмечены . Ниже я перечисляю все способы, которые я пробовал, вместе с сообщением об ошибке , которое я получаю, когда я пробую каждый.

$.tree.plugin.checkbox.get_checked($.tree.reference("#smuDomains")); 
$.tree is undefined 

$.jstree.plugin.checkbox.get_checked($.jstree.reference("#smuDomains")); 
$.jstree.plugin.checkbox is undefined 

$.tree.plugins.checkbox.get_checked($.tree.reference("#smuDomains")); 
$.tree is undefined 

$.jstree.plugins.checkbox.get_checked($.jstree.reference("#smuDomains")); 
$.jstree.plugins is undefined 

Второй ($ .jstree.plugin.checkbox), кажется, получение ближе к работе, но это, кажется, не нравится «флажок» ссылки. Должно ли быть check_box или что-то другое?

Это код, который я использую для инициализации дерева:

$.jstree._themes = "../script/css/jstree/themes/"; 
$("#smuDomains").jstree({ 
    core : {}, 
    themes : { 
     theme : "classic", 
     dots : true, 
     icons : true, 
     url : false 
    }, 
    json_data : { 
     ajax : { 
      url : "[the url]", 
      datatype : "json", 
      data : function(n) { 
       return { id : n.attr ? n.attr("id") : 0 }; 
      }, 
      plugins : [ "themes", "json_data", "ui", "checkbox"] 
     }); 
    }); 
+0

Уверены, что все скобы закрыты? – Harmen

+0

Да, все скобки есть, я просто не делал такой работы, как копирование и вставка, как я должен был сделать. Дерево работает безупречно. Только когда я пытаюсь сделать вызов get_checked, я запускаю неопределенные ошибки. – irrational

ответ

0

один из вопросов, с get_checked является то, что он остановится на родительских узлов, которые проверяются.

Мы закончили тем, что с чем-то вроде этого:

$ («# idOfDivContainingTree .jstree проверено»)

Существует риск этого не работает с будущими версиями jsTree, как это зависит от реализация

+0

Я не тестировал его сам, но если вы посмотрите на документы jsTree для плагина Checkbox, вы увидите, что get_checked имеет логический параметр get_all, который должен возвращать все проверенные узлы. –

3

Я использую этот код, чтобы получить проверенные коробки как раз перед отправить форму:.

jQuery('#myForm').submit(function() { 
    jQuery('#mytree .jstree-checked').each(function() { 
     var node = jQuery(this); 
     var id = node.attr('id'); 
     var node_parent = node.parents('li:eq(0)'); 
     var pid = node_parent.attr('id'); 

     jQuery("<input>").attr("type", "hidden").attr("name", "treenode").val(id).appendTo("#mytree"); 
    }); 
}); 
1

$ ('# дерево') jstree ('get_checked')

0

Вы можете:.

checked_nodes = $ ("#") smuDomains jstree ("get_checked", NULL, TRUE);

$ .each (checked_nodes, функция (к, п) {

node = $(n); 
alert("name: "+node.attr("name")); //show each one of the nodes names 

});

, если вы хотите только выбранные узлы, вы можете иметь:.

selected_nodes = $ ("#") smuDomains jstree ("get_selected", NULL, TRUE);

надеюсь, что это поможет