2010-09-09 29 views
20

Tôi đang sử dụng plugin jsTree jQuery và muốn thực thi mã khi người dùng nhấp đúp vào một nút.Làm cách nào để đính kèm hành vi tùy chỉnh vào một nhấp đúp trong jsTree?

Tôi dường như không làm cho nó hoạt động. Tôi tìm thấy một số tài liệu về sự kiện ondblclk nhưng nó không kích hoạt.

browser.jstree(
      { 
       plugins: ["themes", "json_data", "ui", "cookies"], 
       callback: 
       { 
        ondblclk: function (node, tree) { 
         if (!thisReportBrowserthis._isFoldersOnly) { 
          var f = node; 
         } 
        } 
       } 
      } 
     ); 

Làm thế nào tôi có thể xử lý sự kiện click đúp với jstree?

+1

Nó xuất hiện các tài liệu tôi tìm thấy cho đoạn mã trên là out-of-date. – GiddyUpHorsey

Trả lời

21

Hóa ra tôi có thể làm điều này:

jstree.bind("dblclick.jstree", function (event) { 
    var node = $(event.target).closest("li"); 
    var data = node.data("jstree"); 
    // Do my action 
}); 

node chứa li mà được nhấp vào và data chứa siêu dữ liệu với thông tin của tôi trong đó.

+1

Trả về dữ liệu không xác định. –

6

'dblclick.jstree' không tồn tại trong phiên bản trước jsTree 1.0.

DoubleClick cho nút:

$("#yourtree").delegate("a","dblclick", function(e) { 
    var idn = $(this).parent().attr("id").split("_")[1]; 
    alert(idn); //return NodeID  
}); 

Chèn này nếu bạn muốn chỉ dblclicked nút

if (this.className.indexOf('icon') == -1) { /* is the node clicked a leaf? */ } 
+0

Tôi không thấy bất kỳ "id" nào trên cây của mình (tôi đang sử dụng plugin HTML_DATA để tạo cây của mình và tôi không bận tâm tạo bất kỳ ID nào), nhưng để lại mã đó hoạt động. ".on()" là cách jQuery hiện đại hơn để làm điều này, do đó, làm $ ("# yourtree"). on ("dblclick", "a", function (e) {...}); – mhenry1384

4

Đó là một chút khác nhau để có được dữ liệu ra đối với tôi, nhưng nếu không trả lời GiddyUpHorsey là chỗ-on . Đây là mã một lần nữa:

 jstree.bind("dblclick.jstree", function (e, data) { 
      var node = $(e.target).closest("li"); 
      var id = node[0].id; //id of the selected node 
     }); 
+0

tương tự cho tôi, ngoại trừ xóa dữ liệu khỏi cuộc gọi lại vì nó không được xác định – frage

1

Những câu trả lời ở trên không hoạt động trên các phiên bản mới nhất của jstree (đó là 3.3.4)
này chi phí cho tôi một ngày tâm uốn làm việc nhưng cuối cùng tôi đã nhận nó. Dưới đây là DoubleClick làm việc để Chỉnh sửa mã:

$('#tree1').bind("dblclick.jstree", function (event) { 
 
    var tree = $(this).jstree(); 
 
    var node = tree.get_node(event.target); 
 
    tree.edit(node); 
 
});

và đây là một jsfiddle làm việc.

0

như phiên bản 3.3.5, Tôi đang sử dụng này một:

 $('#jstree').on("dblclick.jstree", function (e) { 
      var instance = $.jstree.reference(this), 
      node = instance.get_node(e.target); 
      // Code 
     }); 
Các vấn đề liên quan