我正在使用jstree并尝试捕获复选框状态更改事件。如何获取当前所选复选框的状态及其列表ID?
我在这里找到的例子: Jquery Jstree checkbox events capture 但我无法弄清楚如何获得节点的检查状态。如果有更好或更简单的方式,我愿意接受其他建议。
$("#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中启用了树复选框。 **
答案 0 :(得分:0)
不是解决方案,解决方法!!! 我发现这篇文章在寻找类似问题的解决方案之后,在玩各种场景后决定不使用
real_checkboxes
选项。相反,我添加了一系列隐藏的复选框,并修改了您的脚本以设置隐藏框的已检查状态,然后将其发布回表单中的服务器(MVC3)。然后,我可以使用树节点LI的id来设置我的复选框的已检查状态。
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/>");
}