2

チェックボックスの横にあるノードのテキストをクリックするときに、チェックボックスでチェック状態を切り替えたいのですが。通常、これは。で行われ<label for="whatever"></label>ます。しかし、jsTreeは実際のチェックボックスを使用しないため、これをどのように行うことができますか?

でツリーを作成する場合、最後$('#mytree').jstree({'plugins':['checkbox']})に置くと機能します。.delegate("a", "click", function (event, data) { $(event.target).find('.jstree-checkbox').click() })しかし、認識できる遅延があります。

したがって、私は質問を投げかけます、対応するテキストをクリックするときにチェックボックスをオンにする最良の方法は何ですか?

4

2 に答える 2

0

jstree のチェックボックス プラグインは、ノードのチェック/チェック解除時に他のアクションを実行するように見えます。私はあなたが探していることを次のようにすべきだと信じています:

$(function(){
    // Initialize jstree
    var $tree = $('.tree-target').jstree({
        "plugins": ["checkbox"]
    });

    // Bind an event to the anchor tag within each tree entry
    // Note: '.on' is used here as this will ensure that any
    // dynamically-generated entries will also use this 'click'
    // event.
    $tree.on('click', 'li.tree > a', function (e) {
        e.stopPropagation();

        // Find the first parent 'tree' element
        var $node = $(this).parents('li.tree').eq(0);

        // Toggle the state of the current 'tree' element
        // Note: The third parameter (in this case 'toggle')
        // can be any value other than true or false
        $tree.jstree('change_state', $node, 'toggle');
        return false;
    });
});​

余談ですが、あなたのアプローチが大幅な遅延につながった理由は、ページ上のclickすべての<a/>タグにイベントをバインドすることに関係している可能性があると思います. これにより、適切なイベント ターゲットを見つけようとすると、かなりのオーバーヘッドが発生します。

于 2012-04-22T18:57:29.660 に答える
0

使用しているクリック ハンドラー手法に同意します。言及されている遅延は見られませんが、サーバーに何も投稿していないことが原因である可能性があります。

チェックボックスが純粋に視覚的なものである場合、おそらくクラスを直接変更できます。これは、別のクリック イベントをスローするよりも高速である必要があります。

$(event.target).parent("li:first").toggleClass("jstree-unchecked").toggleClass("jstree-checked");
于 2012-04-21T02:14:14.423 に答える