我有两个函数,一个用于扩展树视图(即ExpandAll()),第二个用于从树视图中删除特定类型的元素(即RemoveAbElements())。
ExpandAll()方法检查所选节点下是否有子节点。如果没有,则它通过ajax调用检索子元素。所以现在我调用这些方法如下:
function(){
ExpandAll();
RemoveAbElements();
}
现在我的问题是,在ExpandAll()方法中有一个回调,它会被扩展(这是预期的)每个子节点调用。现在,即使在执行RemoveAbElements()方法之后,也会调用回调。我想在RemoveAbElements()执行之前执行ExpandAll()方法及其所有回调。我为此尝试了很多东西但没有效果。请帮忙。
答案 0 :(得分:1)
你可能有很多方法可以接近。
一种方法是,将 RemoveAbElements 本身传递给 ExpandAll 。
所以你可以把它传递给
ExpandAll(RemoveAbElements);
或者,当您不想调用RemoveElements时,如:
ExpandAll();
可以修改ExpandAll以接受回调:
ExpandAll(callbackFunc) {
//... Do Work Here
if(callbackFunc) callbackFunc();
}
或使用triggerhandler& on如果有一个jquery对象,如 slinky2000 所示。
答案 1 :(得分: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');