2016-03-23 12 views
0

Ich mache einen AJAX-Aufruf zum Erstellen und Füllen meines JSTree div. Ich habe die Checkbox Plugin aktiviert und versuchen, Kontrollkästchen alle Kontrollkästchen in meinem AJAX-Ergebnis Rückruf. Es funktioniert nicht.Jstree - Checkboxen in AJAX-Call können nicht aktiviert werden, funktioniert in klassischen Call. Ein Problem?

Ich verbinde die gleiche Funktion (das wird alle Kontrollkästchen) auf eine Schaltfläche und hier funktioniert es.

Ich habe auch versucht, alle Kontrollkästchen durch eine benutzerdefinierte Ereignis mit jQuery zu überprüfen, aber es tut nichts, wie in der AJAX-Aufruf

Ist das ein Problem mit JSTree oder gibt es etwas, was ich bin fehlt?

ich reproduziert dieses Ausgabe in JsFiddle (?): https://jsfiddle.net/Lyyn/c74wpa6z/


Specs:

  • jQuery 1.9.1
  • jsTree 3.2.1

Der Code

HTML

<h1> 
JSTree Demo 
</h1> 
<button id="btn"> 
Check All 
</button> 
<div id="jstree"> 

</div> 

JS

// Populate the tree with some generic data 
$.ajax({ 
    // ... initial ajax code with some generic data 
    success: function(response) { 
      var $tree = $("#jstree"); 
      $tree.jstree(response); 

     // Try to check all boxes, it doesn't work 
     checkAll($tree); 
    } 
}); 

// Try to check all boxes, here it works. Why. 
$("#btn").click(function(){ 
     checkAll($("#jstree")); 
}) 

// This will check all boxes inside the tree 
function checkAll(tree) { 
     tree.jstree(true).check_all(); 
} 

Antwort

1

Das ist, weil jstree noch nicht die Knoten aufgebaut hat, wenn Sie checkAll innerhalb Erfolg Rückruf nennen. Wickeln Sie einfach Ihre checkAll Anruf in ready.jstree Ereignis wie unten. Überprüfen Sie das Demo - Fiddle.

... 
success: function(response) { 
    var $tree = $("#jstree"); 
    $tree.jstree(response).on('ready.jstree', function() { 

     // Try to check all boxes 
     checkAll($tree); 

}); 
+0

Ich sehe ... Vielen Dank, es funktioniert wirklich gut! –

Verwandte Themen