Ответ 1
Мне нравится плагин jstree, но он недостаточно хорошо документирован и не построен, чтобы соответствовать стандарту jquery ui разработки плагина. Я использовал 1.0rc2 для выполнения того, что вы пытаетесь сделать.
Вам нужно связать "загруженное" событие, прежде чем создавать экземпляр jstree, поэтому я предполагаю, что это так же происходит с событием "change_state" . Другая вещь, на которую следует обратить внимание, заключается в том, что "change_state" - это больше, чем просто изменение из-за флажка. Например, он также срабатывает, когда вы разворачиваете node (но не сворачиваете, по какой-то причине). Тем не менее, я делаю некоторые kludgey проверки в обработчике "change_state" , чтобы попытаться отфильтровать нежелательные события из изменения флажка. Минимальный код для прослушивания обработчика -
$("#treeElement").bind("change_state.jstree", function (e, d) {
var tagName = d.args[0].tagName;
var refreshing = d.inst.data.core.refreshing;
if ((tagName == "A" || tagName == "INS") &&
(refreshing != true && refreshing != "undefined")) {
//if a checkbox or it text was clicked,
//and this is not due to a refresh or initial load, run this code . . .
}
});
Теперь ваш элемент с щелчком d.rslt
, и вы можете получить отмеченные элементы с помощью d.inst.get_checked()
только для щелчка элемента или d.inst.get_checked(d.rslt)
для объекта, содержащего проверяемые узлы. Используйте функцию jquery.each для обработки узлов.