0

我有两个功能,一个是用于扩展树视图(即 ExpandAll()),第二个是用于从该树视图中删除特定类型的元素(即 RemoveAbElements())。

ExpandAll() 方法检查所选节点下是否有子节点。如果不是,则它通过 ajax 调用检索子元素。所以现在我将这些方法称为如下:

function(){
    ExpandAll();

    RemoveAbElements();
}

现在我的问题是,ExpandAll() 方法中有一个回调,它会为每个展开的子节点调用(这是预期的)。现在,即使在执行 RemoveAbElements() 方法之后,回调也会被调用。我想在执行 RemoveAbElements() 之前执行 ExpandAll() 方法及其所有回调。我为此尝试了很多东西,但都没有奏效。请帮忙。

4

2 回答 2

1

你可能有很多方法可以接近。

一种方法可能是将RemoveAbElements本身传递给ExpandAll

所以你可以把它作为

ExpandAll(RemoveAbElements);

或者,当您不想调用 RemoveElements 时,如:

ExpandAll(); 

并且可以修改 ExpandAll 以接受回调:

ExpandAll(callbackFunc) {

   //... Do Work Here

   if(callbackFunc) callbackFunc();
}

或者如果有 jquery 对象,则使用triggerhandler & on ,如slinky2000所建议的那样。

于 2013-05-23T08:30:34.440 回答
0

如果我对您的理解正确,您需要向 EXpandAll() 添加一个侦听器,并在完成后调用 RemoveAbElements()

我会看看 jquerys 自定义事件触发:

http://api.jquery.com/trigger/

// Listen for finish
$('#tree').on('customFinishedEvent', function(event) {
    alert('finished');
});

// On finished loading and expanding
$("#tree").trigger('customFinishedEvent');
于 2013-05-23T08:29:43.403 回答