0

我正在处理 html 表单,我根据项目的要求使用了 dynatree 进行选择和多选。我需要做的是制作一个编辑表单,用户可以从数据库中获取所有字段。这意味着我需要向用户展示一个带有已选择字段的 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>

这是添加类的通用代码。可能有一种更具体的方式来指定一个元素被选中,因为它是一个核心 dynatree 概念,而不是用户定义的类。

于 2013-04-29T20:00:22.917 回答