0

私はhtmlフォームに取り組んでおり、プロジェクトの要件に従って、選択と複数選択にdynatreeを使用しました。私がする必要があるのは、ユーザーがデータベースから入力されたすべてのフィールドを取得する編集フォームを作成することです。つまり、すでに選択されているフィールドを持つダイナツリーをユーザーに表示する必要があります。ここに私のコード例があります:

<span  id="action" name="action">
  <ul>
       <li id="DisruptiveAction" class="folder expanded">DisruptiveAction (5)
      <ul>    
        <li id="allow" title="optional">allow           
        <li id="deny" title="optional">deny
        <li id="pass" title="optional" class="selected" >pass           
        <li id="block" title="optional">block
        <li id="redirect" title="optional">redirect                         

     </ul>
   </ul>
</span> 

Java スクリプト :

$("#action").dynatree({
        classNames: {
            container: "action-container",
            checkbox: "dynatree-radio"
        },
        selectMode: 3,
        onSelect: function(select, node) {
            var selKeys = $.map(node.tree.getSelectedNodes(), function(node){
                return node.data.key;
            });
            $("#selectedAction").val(selKeys.join(","));
                var selRootNodes = node.tree.getSelectedNodes(true);
                var selRootKeys = $.map(selRootNodes, function(node){
                    return node.data.key;
                });
        }           
    });

上記のhtmlでは、li要素でclass = "selected"を使用していますが、UIで選択済みとして表示されていません。前もって感謝します。

4

1 に答える 1

2

Dynatree は、初期化時およびツリーの存続期間中、独自の要素を作成します。したがって、追加する li 要素はツリーの li 要素ではありません。

このドキュメントの「ノード オプション」セクションを参照してください。次のようにクラスを追加できることがわかります。

<div id="tree">
<ul>
  <li id="DisruptiveAction" class="folder expanded">DisruptiveAction (5)
  <ul>    
    <li id="allow" title="optional">allow           
    <li id="deny" title="optional">deny
    <li id="pass" title="optional" data="addClass: 'dynatree-selected'" >pass           
    <li id="block" title="optional">block
    <li id="redirect" title="optional">redirect                         
 </ul>

これは、クラスを追加するための汎用コードです。要素が選択されていることを指定するより具体的な方法があるかもしれません。これは、ユーザー定義のクラスではなく、コア ダイナツリーの概念であるためです。

于 2013-04-29T20:00:22.917 に答える