停止jquery onChange递归迭代

时间:2015-09-15 10:48:25

标签: javascript jquery recursion

我有jstree插件我只是通过选定节点填充此插件并使用节点选择方法中的ajax发布数据。 Althouh我用“letChangeTrig”控制 由于我重新生成树,它会递归调用自己的查法方法..但我想在用户选择时调用它。

$('#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它会陷入循环..我需要通过逻辑控制来阻止它

1 个答案:

答案 0 :(得分:4)

您是否尝试过jQuery event.stopPropagation()方法? 它会阻止事件冒泡到父元素,从而阻止执行任何父事件处理程序。