2015-09-15 14 views
5

Ich habe jstree plugin Ich fülle dieses Plugin einfach durch ausgewählte Knoten und Daten mit Ajax in Node-Select-Methode. Althouh mache ich eine Kontrolle mit „letChangeTrig“ es selbst nennen onChamge Methode rekursiv aufgrund ich Baum refrest .. aber ich möchte dies rufen, wenn Benutzer nur wählen ..Stop jquery onChange rekursive Iteration

$('#tree_2').jstree({    
}).on('changed.jstree', function (e, datap) { 
    debugger 
    if(!letChangeTrig) 
    { 
     letChangeTrig = true; 
     return; 
    } 

    $.ajax({ 
     url: "../../Controller/ActiveDirectoryController.php5", 
     type: "POST", 
     dataType: "json", 
     data: params, 
     success: function (result) { 
      treeData_ = prepareObjectsforTree(result.Objects); 
      resfreshJSTree(treeData_);    
     }, 
     error: function (a, b, c) { 

     } 
    }); 
}); 

refresh:

function resfreshJSTree(treeDataa) { 
    letChangeTrig = false; 
    $('#tree_2').jstree(true).settings.core.data = treeDataa; 
    $('#tree_2').jstree(true).refresh(); 

} 

und das ist meine Jstree Refresh-Funktion, die die OnChange-Methode auslösen .. und Daten .. nach der Antwort zurück zum Erfolg Ich rufe dies erneut zu Baum mit geänderten Daten zu aktualisieren, aber auf diese Weise beginnt es sich selbst ohne Benutzer wählen wählen Sie es und es fallen in Schleife .. Ich muss es durch logische Kontrolle stoppen

Antwort

4

Haben Sie versucht, jQuery event.stopPropagation() Methode? Es stoppt das Übergeben eines Ereignisses an übergeordnete Elemente und verhindert, dass übergeordnete Ereignisbehandlungsroutinen ausgeführt werden.

+1

Ihr Ereignisobjekt wird in die Callback-Funktion übergeben. Versuchen Sie e.stopPropagation() – user888734

+0

Ok ich sehe jetzt, danke –