Как захватить событие щелчка флажка? - PullRequest
0 голосов
/ 26 августа 2011

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

Пример, который я нашел здесь: Захват событий Jquery Jstree работает, но я не могу понять, как получить состояние проверки узла. Если есть лучший или более простой способ, я открыт для других предложений.

$("#demo1").bind("change_state.jstree", function (e, d) {
        if ((d.args[0].tagName == "A" || d.args[0].tagName == "INS") &&
            (d.inst.data.core.refreshing != true && d.inst.data.core.refreshing != "undefined")) 
        {
            //if a checkbox or it's text was clicked, 
            //and this is not due to a refresh or initial load, run this code . . .
            alert("list id: " +d.rslt.attr("id"));
            alert("is item checked?" +"***TODO***"); 
        }
    });

Спасибо.

** РЕДАКТИРОВАТЬ: я разъяснил свой вопрос, чтобы избежать путаницы по поводу объединения плагинов (это не то, что я делаю). Я включил флажки дерева в jstree. **

1 Ответ

0 голосов
/ 02 сентября 2011

Не решение, обходной путь !!! Я нашел этот пост в поисках решения аналогичной проблемы, после игры с различными сценариями решил не использовать

real_checkboxes

опция.Вместо этого я добавил ряд собственных скрытых флажков и изменил ваш сценарий, чтобы установить проверенный статус скрытых полей, которые затем отправляются обратно на сервер (MVC3) в форме.Затем я могу использовать идентификатор узла дерева LI, чтобы установить проверенный статус моих флажков.

if ((d.args[0].tagName == "A" || d.args[0].tagName == "INS") &&
        (d.inst.data.core.refreshing != true && d.inst.data.core.refreshing != "undefined")) {
            //if a checkbox or it's text was clicked, 
            //and this is not due to a refresh or initial load, run this code . . .
            var id = d.rslt.attr("id"); 
            var checked = $("#" + id + ".jstree-checked").length!=0; // use the length!=0 to get a bool of the checked status
            $("#log").append("list id: " + id);
            $("#log").append("is item checked ? " + checked);
            $("#log").append("<br/>");


        }
...