Мне нравится плагин jstree, но он плохо документирован и не создан, чтобы соответствовать, скажем, стандартам jquery ui разработки плагинов.Я использовал 1.0rc2, чтобы выполнить то, что вы пытаетесь сделать.
Вы должны связать «загруженное» событие, прежде чем создавать экземпляр jstree, поэтому я предполагаю, что то же самое с событием «change_state».Другая вещь, на которую следует обратить внимание, это то, что «change_state» - это больше, чем просто изменение из-за флажка.Например, он также будет срабатывать при расширении узла (но не по какой-то причине).Тем не менее, я делаю некоторую проверку 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's 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)
для объекта, содержащегоподузлы, которые проверены.Используйте функцию jequery .each для обработки узлов.