2016-06-30 12 views
0

Einfache jstree Liste mit Datenattributen:Wegbeschreibung Datenattribute von einem jstree Elemente

<div id="jstree1"> 
    <ul> 
     <li class="jstree-files jstree-open" data-file-id=716 data-size=1088>list_elemnt1<ul> 
    </ul> 
</div> 

ich erfolgreich den Weg bekommen:

$(document).ready(function() { 
      $('#jstree1').on('changed.jstree', function (e, data) { 
       var path = data.instance.get_path(data.node, '/').replace('//', '/'); 
      }); 
     }); 

aber ich kann einfach nicht den richtigen Weg finden die Datenattribute (data-file-id, data-size)

Sah überall in sowohl edata und ohne Erfolg zu holen.

Antwort

0

Der relevante DOM-Knoten ist im Argument data für das Ereignis verfügbar. Sie können es mit jQuery wickeln und die Dateneigenschaften bequem zugreifen:

$('#tree_menu').on('changed.jstree', function (e, data) { 
    alert($(data.node).data("file-id")); 
}); 

oder ... Sie können einfach direkt Standard-DOM-Methoden verwenden, die in diesem Fall ziemlich viel die gleichen, so weit wie Bequemlichkeit geht.

$('#tree_menu').on('changed.jstree', function (e, data) { 
    alert(data.node.getAttribute("data-file-id")); 
}); 
+0

Vielen Dank für Ihre Antwort, obwohl ich die relevanten Attribute in der Konsole sehen kann, etwas ist nicht richtig, wenn sie zu holen: https://imgur.com/eertk3H ich etwas fehlen könnte extrem albern . – billy

+0

OK, das scheint zu funktionieren: '$ (data.node.data) [0] .size' ' $ (data.node) [0] .id' – billy

+0

@billy Das ist nicht notwendig. Wenn Sie die DOM-Eigenschaften verwenden möchten, müssen Sie jQuery überhaupt nicht aufrufen. Verwenden Sie einfach den DOM-Knoten. 'data.node.data.site' und' data.node.id' funktionieren einwandfrei. – Tomalak