Jstree отключить флажок - PullRequest
       14

Jstree отключить флажок

8 голосов
/ 13 декабря 2011

В настоящее время я работаю над некоторым POC, используя плагин JS Tree и соответствующий флажок.Для определенных узлов мне нужно установить флажок по умолчанию и отключить любой дальнейший выбор. Я нашел функцию, чтобы скрыть флажок

.bind("load_node.jstree", function (e, data) {
          $(this).find('li[rel!=file]').find('.jstree-checkbox:first').hide();
      });

вместо того, чтобы полностью скрывать флажок. Я хочу найти способотключить флажок для определенных узлов

Ответы [ 3 ]

10 голосов
/ 14 декабря 2011

Вам нужно будет определить «отключенный» тип (используя плагин типов), а затем назначить этот тип нужному узлу.

Возьмем, к примеру, это определение «отключенного» типа:

           "types" : {
                "types": {
                "disabled" : { 
                      "check_node" : false, 
                      "uncheck_node" : false 
                    } 
                }
            }

и тип присвоения:

$.jstree._reference('#tree').set_type("disabled", "#node5");

Более подробную информацию о плагине типов можно найти здесь , и вы также можете проверить в этой группе Google с дополнительной информацией об отключении флажков

Надеюсь, это поможет!

1 голос
/ 24 июля 2013

Спасибо Маккаралу и Томашу за их ответ.Это помогло мне добиться правильного результата.Тем не менее, мне нужно было добавить несколько дополнительных строк, чтобы заставить его работать правильно.Вот что я сделал:

Вам необходимо добавить два атрибута к тегу <li>, которые rel='disable' указывают, что jstree будет новым типом для флажка вместо значения по умолчанию и *Атрибут 1005 *, который будет предварительно проверять флажки при загрузке дерева.

$rel = ( 'if the checkbox need to be pre-checked' )? 'rel="disabled" class="jstree-checked"' : '';
            echo '<li id="checkbox_id" '. $rel .'>';

Затем на основе предыдущего ответа вам необходимо определить тип «отключить», который использовался в атрибуте rel, следующим образом:

.jstree({
                    "types" : 
                    {
                        "types" : {
                            "disabled" : {
                                 "check_node" : false, 
                                 "uncheck_node" : false 
                            }
                        }
                    },
        "plugins" : ["themes","html_data","ui","crrm","types", "checkbox"],
                    "checkbox" : { "two_state" : true },
    })
0 голосов
/ 16 июня 2019

Если ваш товар статичный; например .... всегда там, как в моем сценарии.

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

#my_item_id .jstree-checkbox {
    display: none;
}
...