私はjstreeプラグインが好きですが、十分に文書化されておらず、プラグイン開発のjquery ui標準に準拠するように構築されていません。あなたがやろうとしていることを達成するために 1.0rc2 を使用しました。
jstree をインスタンス化する前に「loaded」イベントをバインドする必要があるため、「change_state」イベントと同じだと思います。注意すべきもう 1 つのことは、「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
チェックされたアイテムを取得できます。jquery の .each 関数を使用してノードを処理します。d.inst.get_checked()
d.inst.get_checked(d.rslt)