Здравсвуйте.
Использую для прорисовки дерева jsTree с плагином jstree.checkbox.js
При первой загрузке данных пользователь ставить галочки над нужными нодами, это сохраняется на серваке.
При повторной загрузке, установленные ноды уже должны быть в состоянии "checked".
Но, если чекнуть уже проставленную ноду, то она с первого раза не снимает checked, и в добавок запускает с первого раза событие check_node.jstree вместо uncheck_node.jstree. А со второго раза снимает флажок.
Я получаю данные с сервера и на jquery строю html данные в виде списка:
group_build = function( group, ul) {
var li = $('<li data-id="' + group.Id + '"><a href="">' + group.Name + '</a></li>');
if (group.Checked) {
// если есть дочерние, открываем группу
if (group.Children && group.Children.length) {
li.addClass('jstree-open');
}
li.children('a').addClass('jstree-checked');
}
ul.append(li);
if (group.Children && group.Children.length) {
var _ul = $('<ul />');
li.append( _ul );
for (var i in group.Children) {
var sub_group = group.Children[i];
group_build(sub_group, _ul);
}
}
};
далее запускаю прорисовку jsTree:
var n_tree = $('.n_tree');
n_tree.jstree( normativeOptions.jstreeOptions )
.on('search.jstree', function(){
$('#groups_search').parent().removeClass('delay');
})
.on('check_node.jstree', function(evt, data){
_this.group_checked(data);
})
.on('uncheck_node.jstree', function(evt, data){
_this.group_checked(data);
});
Опции:
var normativeOptions = {
jstreeOptions : {
plugins : [
'search',
'checkbox'
],
search : {
show_only_matches : true
},
checkbox : {
keep_selected_style : false,
three_state : false,
tie_selection : false,
cascade : ''
}
}
};
В чем может быть проблема? Почему галочка не снимается с первого раза, если нода уже установлена в checked ?