Mam wtyczkę jstree Po prostu wypełniam tę wtyczkę wybranymi danymi węzła i posta za pomocą ajax w metodzie node-select. Althouh robię sterowania z „letChangeTrig” to nazywać siebie onChamge metodę rekurencyjnie powodu ja refrest drzewa .. ale chcę zadzwonić to kiedy użytkownik wybrać tylko ..Zatrzymaj jquery onChange iteracji rekurencyjnej
$('#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) {
}
});
});
odświeżania:
function resfreshJSTree(treeDataa) {
letChangeTrig = false;
$('#tree_2').jstree(true).settings.core.data = treeDataa;
$('#tree_2').jstree(true).refresh();
}
i to jest moja funkcja odświeżania jstree, która wyzwala metodę onChange .. i dane postu .. po odpowiedzi na sukces, wywołuję to ponownie, aby ponownie skompilować drzewo ze zmienionymi danymi, ale w ten sposób zaczyna się nazywać sobą bez wyboru użytkownika evet i go wpadną w pętlę. Potrzebuję zatrzymać to przez logiczną kontrolę
Twoim obiektem zdarzenia jest e przekazane do funkcji wywołania zwrotnego. Wypróbuj e.stopPropagation() – user888734
Ok Widzę teraz, dziękuję –