Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在更改递归迭代时停止jquery_Javascript_Jquery_Recursion - Fatal编程技术网

Javascript 在更改递归迭代时停止jquery

Javascript 在更改递归迭代时停止jquery,javascript,jquery,recursion,Javascript,Jquery,Recursion,我有一个jstree插件,我只需通过选择的节点填充这个插件,并在节点选择方法中使用ajax发布数据。虽然我用“letChangeTrig”做了一个控件 由于I refrest tree,它递归地调用onChamge方法。。但我想在用户仅选择时调用此 $('#tree_2').jstree({ }).on('changed.jstree', function (e, datap) { debugger if(!letChangeTrig) {

我有一个jstree插件,我只需通过选择的节点填充这个插件,并在节点选择方法中使用ajax发布数据。虽然我用“letChangeTrig”做了一个控件 由于I refrest tree,它递归地调用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()
方法?
它阻止事件向父元素冒泡,防止任何父事件处理程序被执行。

事件对象是传递到回调函数的e。试试e.stopPropagation()