我有 jstree 插件 我只是通过选定的节点填充这个插件,并在节点选择方法中使用 ajax 发布数据。虽然我用“letChangeTrig”做了一个控制 由于我刷新树,它递归地调用自己的 onChamge 方法。但我想在用户仅选择时调用它。
$('#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) {
}
});
});
刷新:
function resfreshJSTree(treeDataa) {
letChangeTrig = false;
$('#tree_2').jstree(true).settings.core.data = treeDataa;
$('#tree_2').jstree(true).refresh();
}
这是我的 jstree 刷新函数,它触发 onChange 方法......并发布数据......在响应成功后我再次调用它以使用更改的数据重建树但是通过这种方式它开始调用自己而无需用户选择 evet它陷入循环..我需要通过逻辑控制来阻止它
最佳答案
您是否尝试过 jQuery event.stopPropagation()
方法?
它停止将事件冒泡到父元素,从而阻止执行任何父事件处理程序。
关于javascript - 停止 jquery onChange 递归迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32584098/