gpt4 book ai didi

jquery - $.when 不等待 Jstree open 函数完成

转载 作者:行者123 更新时间:2023-12-01 08:11:14 25 4
gpt4 key购买 nike

我有一个 jstree 树,所有树项都是使用 ajax 调用我的服务器来加载的,以填充每个文件夹的子项。我正在尝试构建一个函数,该函数将深入遍历树并根据我传递给函数的内容选择一个子项。我目前正在使用以下函数来执行此操作,但我的 $.when(...).done(...) 函数不会等待打开发生,然后无法加载其下面的任何子级。

function openNodes(tree, nodesToOpenRaw, selectedNode) {
var treeObj = $(tree);
treeObj.one('loaded.jstree', function() {
openNodesRaw(treeObj, nodesToOpenRaw, selectedNode);
});
}

function openNodesRaw(tree, nodesToOpen, selectedNode) {
if (tree.jstree('is_open', nodesToOpen[0])) {
goToNextNode(tree, nodesToOpen, selectedNode);
} else {
$.when(tree.jstree("open_node", nodesToOpen[0])).done(function () {
if (nodesToOpen[0] == null) {
goToNextNode(tree, nodesToOpen, selectedNode);
return;
}
goToNextNode(tree, nodesToOpen, selectedNode);
});
}
}

function goToNextNode(tree, nodesToOpen, selectedNode) {
if (nodesToOpen.length > 0 && Object.prototype.toString.call(nodesToOpen) === '[object Array]') {
var newNodesToOpen = nodesToOpen.slice(0);
newNodesToOpen.shift();
openNodesRaw(tree, newNodesToOpen, selectedNode);
} else {
tree.jstree("select_node", selectedNode, true);
tree.unbind('ajaxSuccess');
}
}

为什么 $.when 函数要等待 tree.jstree("open_node",....) 的 ajax 调用完成才能继续执行下一个函数?

最佳答案

$.when() 期望其参数为 jQuery $.Deferred .

大概tree.jstree()返回其他东西。

关于jquery - $.when 不等待 Jstree open 函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13521864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com