2012-05-31 52 views
1

我在我的代碼中使用dynaTree http://wwwendt.de/tech/dynatree/index.html來顯示2級樹。此樹顯示在selectMode = 3checkboxes中,當用戶選中節點複選框時,其父代會變爲gray mode如何讀取部分選定子節點的父節點

在下一個階段,當用戶點擊一個按鈕時,我將所有選定的節點發送到服務器進行處理。 我想要做的是發送所有gray mode複選框。

我該如何實現這個目標?

編輯: 這是所有的代碼,你需要

<html> 
<head> 
    <link type="text/css" href="../css/ui.dynatree.css" rel="stylesheet"> 
    <script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script> 
    <script type="text/javascript" src="../js/jquery-ui-1.8.16.custom.min.js"></script> 
    <script type="text/javascript" src="../js/jquery.dynatree.min.js"></script> 
    <script type="text/javascript"> 
     var treeData = [ 
      { key: "key1", title: "Text 1" }, 
      { key: "Key2", title: "Text 2", 
       children: [ 
        { key: "Key2_1", title: "Text 2_1" }, 
        { key: "Key2_2", title: "Text 2_2" }, 
       ] 
      }, 
     ]; 

     $(function() { 
      $("#tree").dynatree({ 
       checkbox: true, 
       selectMode: 3, 
       children: treeData, 
       imagePath: "../images/Tree/", 
       onSelect: function (select, node) { 
        var selKeys = $.map(node.tree.getSelectedNodes(), function (node) { 
         return node.data.key; 
        }); 
        $('#textField').val(selKeys.join(", ")); 
       } 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <div id="tree"></div> 
    <input type="text" id="textField" value="" /><input type="button" id="button" onclick="alert($('#textField').val())" value="Send" /> 
</body> 
</html> 

當選擇Key2_1Key2gray state,你會看到Key2_1被添加到textField文本框,我想有鍵2在textField場也是如此。

注:選擇的Key2_1Key2_2兩個子節點也將選擇父(key_2),但不能當它在gray mode

+0

請上傳您所使用的代碼。 – lucuma

回答

2

看來dynaTree不必找部分所選節點的方法。 另一種解決方案是查找這些節點的類名。默認情況下,如果部分選定節點的類名稱未更改,則它將爲dynatree-partsel,但具有完全選定子項的節點也會分配該類,因此我們需要選擇其類中沒有dynatree-selected的節點。

一個骯髒的解決方案將方法定義改變ONSELECT到:

onSelect: function (select, node) { 
    var selKeys = $.map(node.tree.getSelectedNodes(), function (node) { 
     return node.data.key; 
    }); 
    var partsel = new Array(); 
    $(".dynatree-partsel:not(.dynatree-selected)").each(function() { 
     var node = $.ui.dynatree.getNode(this); 
     partsel.push(node.data.key); 
    }); 
    selKeys = selKeys.concat(partsel); 
    $('#textField').val(selKeys.join(", ")); 
} 
0
var parent = node.getParent(); 
var parentnode = parent.data.key; 

parentnode變量,你會得到父節點的值

+0

請仔細閱讀要求!我需要找到選擇了部分子節點的節點。 – AaA

相關問題