12

私はjQueryとjstreeにまったく慣れていません。私はjstreeを使用しており、xmlを使用してデータを入力しています。ただし、IDとともにチェックされているかどうかに関係なく、各ノードのイベントをキャプチャしたいと思います。のようなjstreeのプラグインAPIを使用してみましたがchange_state()、機能しません。また、選択したすべてのノードのデータを配列で取得して、さらに処理したいと思います。誰か助けてもらえますか?check_node()select_node()

ありがとう...

4

2 に答える 2

22

私は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)

于 2011-03-31T19:52:43.427 に答える
3

現在のバージョンの jstree では、check_node.jstree バインディングに問題があるようです。また、select_node.jstree バインディングは、現在のリリースでアクティブなチェックボックス プラグインでは起動しません。

ここにアクセスして、クリエイターに質問したり、すでに寄せられた質問を表示したりできます。

$.jstree._reference("#demo").get_selected();使用して各アイテムのIDを取得できます$.jstree._reference("#demo").get_selected().each(function(index,element){alert($(element).attr("id"));});

于 2011-02-02T10:25:52.817 に答える