Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显式调用javascript回调_Javascript_Jquery - Fatal编程技术网

显式调用javascript回调

显式调用javascript回调,javascript,jquery,Javascript,Jquery,我有两个函数,一个用于展开树视图(即ExpandAll()),另一个用于从树视图中删除特定类型的元素(即removeablements()) ExpandAll()方法检查所选节点下是否有子节点。如果没有,则通过ajax调用检索子元素。现在我调用这些方法如下: function(){ ExpandAll(); RemoveAbElements(); } 现在我的问题是,ExpandAll()方法中有一个回调,它会为每个展开的子节点调用(这是预期的)。现在,即使在执行Remov

我有两个函数,一个用于展开树视图(即ExpandAll()),另一个用于从树视图中删除特定类型的元素(即removeablements())

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

function(){
    ExpandAll();

    RemoveAbElements();
}

现在我的问题是,ExpandAll()方法中有一个回调,它会为每个展开的子节点调用(这是预期的)。现在,即使在执行RemoveAppElements()方法之后,也会调用回调。我想在RemoveAblements()执行之前执行ExpandAll()方法及其所有回调。我为此做了很多尝试,但都没有成功。请提供帮助。

如果我理解正确,您需要向EXpandAll()添加一个侦听器,完成所有操作后,请调用RemoveAblements()

我将介绍jquerys自定义事件触发:


你有很多方法可以接近

一种方法可能是,将移除标记本身传递给ExpandAll

所以你可以把它当作

ExpandAll(RemoveAbElements);
或者,当您不想调用RemoveElements时,如:

ExpandAll(); 
可以修改ExpandAll以接受回调:

ExpandAll(callbackFunc) {

   //... Do Work Here

   if(callbackFunc) callbackFunc();
}


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

感谢您的回复,但是ExpandAll()回调将被多次调用。我只想调用RemoveAblements()一次。它会这样工作吗?对于不想调用RemoveElements的情况,可以将该参数保持为null。我已经更新了我的示例…听起来你的设计对我来说过于复杂了。在我看来,您的问题至少是您的设计决策之一:延迟加载树视图(除非您的数据集很大,否则不要这样做)、异步延迟加载(如果您希望它是异步的,那么您需要将后处理放入onreadystatechange事件处理程序中),或者请求太多的数据,这需要在收到响应后从响应中筛选出数据(如果不需要,请让服务器筛选出数据)。
ExpandAll(callbackFunc) {

   //... Do Work Here

   if(callbackFunc) callbackFunc();
}