明确调用javascript回调

时间:2013-05-23 08:25:08

标签: javascript jquery

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

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

function(){
    ExpandAll();

    RemoveAbElements();
}

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

2 个答案:

答案 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');