2

チェックボックスプラグインでjsTreeを使用してツリーを表示しています。順序付けられていないリスト (UL、LI) を使用してツリーを定義しているだけで、次のようになります。

    $(function() {
        $("#treeId").jstree({
        "themes" : {
            "theme" : "default",
            "dots": true,
            "icons": false
         },
            "plugins": ["themes", "html_data", "checkbox",
                        "ui", "crrm", "hotkeys"]
        });
    });

これを使用してツリーを生成します。特定のノードのチェックボックスを非表示にする方法が必要です。理想的には、チェックボックスが不要なノードにクラスを追加し、それに応じて JavaScript を使用してそれらを非表示にしますが、これを行う方法はまだ見つかりません。JSON 属性を使用してノードを識別するソリューションもありますが、JSON を使用していないため、この方法を使用できるかどうかはわかりません。

私の最終目標は、すべての非葉ノードのチェックボックスを非表示にすることですが、クラスに基づく一般的なソリューションがより役立ちます。または、両方のソリューションも素晴らしいでしょう:)

ありがとう!

マイク

4

4 に答える 4

8

機能を変更するのではなく、特定のノードのチェックボックスを視覚的に非表示にしたい場合は、CSS を使用する必要があります。

たとえば、最終目標はすべての非リーフ ノードのチェックボックスを非表示にすることです。これを実現するために必要な CSS は次のとおりです。

// First hide all checkboxes
ins.jstree-checkbox {
    display:none;
}

// Then display only checkboxes on leaf nodes
li[class~="jstree-leaf"] > a > ins.jstree-checkbox {
    display: inline-block;
} 

ところで、職場で Chrome を使用できない理由をお尋ねしてもよろしいですか?Chrome の優れた開発者ツールを使用して、jstree スタイルを解読し、上記の CSS を理解しました。

于 2012-08-29T18:04:41.237 に答える
0

jsTree についてよく知らないので、Chrome で DOM を見て、非表示にするノードを特定できるのは理にかなっているように思えます。または、DOM のチェックボックスに対して、チェックボックス プラグインが作成する特定の ID またはフットプリントを見つけます。これがわかれば、それらを簡単に列挙し、jQuery または純粋な JavaScript を使用して非表示にすることができます。

于 2012-08-28T22:11:45.640 に答える
0

最後にこれが機能しました。チェックボックスを非表示にするすべてのノードに class="node" を追加し、ツリーがロードされた後、次の JavaScript を実行します。

$(".node").children().hide();

これが同じ問題を抱えている人に役立つことを願っています。

于 2012-09-13T15:40:51.313 に答える