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