2012-07-16 43 views

Trả lời

2

Tôi tìm thấy một cách để làm điều này. Trong trường hợp của tôi, tôi đang sử dụng xml làm nguồn dữ liệu cho cây. Tôi ràng buộc sự kiện open_node với jstree theo cách sau. Hãy nhớ rằng mặc dù tôi đang sử dụng xml, cấu trúc bên trong là dữ liệu html.

// jsTree Configuration hash 
var jsTreeConfig = {}; 

$("#demo1").jstree(jsTreeConfig) 
      .bind('open_node.jstree', function(e, data) { 
       var parentObj = data.rslt.obj; // parent object 
       var jstreeInstance = data.inst; // jstree instance 
       $(data.rslt.obj).find("li").each(function(idx, listItem) { 
        var child = $(listItem); // child object 
        // do Stuff with child which can be any level of hierarchy depth 
        // ... 
       }); 
      }); 
+0

Xin lỗi vì sự thụt đầu người nghèo. jstree ({...}) có tất cả các tùy chọn để khởi tạo jstree. Bạn cần jQuery tải trước để làm việc này. – Sid

4

Bạn có thể lấy cây đầy đủ tất cả bằng cách sử dụng bộ chọn này: $("#demo1").find("li > a")

+0

Cảm ơn @fliespl nhưng tôi chỉ cần các nút con của một phụ huynh cụ thể. Tôi đã tìm ra cách để làm điều đó. Tôi sẽ đăng một câu trả lời ngay sau khi thử nghiệm nó. – Sid

4

Tôi đã thử giải pháp trước và nó không hoạt động với phiên bản mới nhất của jsTree (v3.2.1). Dưới đây là một giải pháp cập nhật để có được các nút con và các nút con của phụ huynh.

$("#myTree").bind('selected_node.jstree', function (node, data) { 
    var selectedNodes = $("#myTree").jstree(true).get_json(data.node.id, { flat: true }); 
    for (var i = 0; i < selectedNodes.length; i++) { 
     // Apply logic here 
     // ... 
     // ... 
     // ... 
    } 
}); 
Các vấn đề liên quan