jQuery创建一个不是回调的回调

jQuery create a callback thats not a callback?

本文关键字:回调 一个 创建 jQuery      更新时间:2023-09-26

好吧,让我们看看我是否能描述这一点。

我有一些功能是在不久前创建的,工作起来很顺利。然而,有一个新的所需规范,因此,在不必重写代码库的情况下,也不必加倍使用代码来获得相同的效果,我正在努力找出如何在同一函数中使代码跳回更高的位置,以重复函数的运行,而不是在下面再次执行相同的代码。

我有一个基于点击的触发器,即:

$('.selector').click(function(){});

在这个函数中,大约有30行功能来创建一个新元素并相应地填充它。然而,不幸的是,在同样的功能中,有条件决定它是否应该

*以前的要求是,当它创建的元素打开并填充时,只需抛出一个alert(),说基本上结束了你的工作,然后继续下一个

*现在新的需求只是关闭它并打开一个新元素
我已经关闭了现有的,并做了我想让它做的一切,除了在当前条件之上的新元素的总体

知道javascript中没有"转到"类型的逻辑(或者我最后知道的)。我唯一能想到的就是从上面取相同的代码,并将其放入条件中,将代码加倍,并随意复制两个相同的位。我想避免这种情况,但想不出办法。所以我在这里寻找想法

知道javascript中没有"转到"类型的逻辑(或者最后一个I知道)。我唯一能想到的就是从并将其置于条件中,加倍编写代码并且具有相同比特的任意2个拷贝。我想避免这种情况,但是想不出一种方法。所以我在这里寻找想法

为什么不把这段代码提取到一个函数中呢?如果条件在原始实例中为true,则可以运行该函数,并在回调中一直运行它?这是一个相当小的重构,只需将代码从逻辑中移到一个单独的函数中,保持原样,并可能将一些引用的变量变成参数。

因此,如果你想运行所有的操作,而不管条件语句是什么:

...
if(condition){
  actionA();
}
if(condition2){
  actionB();
}
...
$('.selector').click(function(){
    actionA();
    actionB();
});    

您熟悉这种模式,对吧?

var aCallback =  function(){........};
$('.selector').click(aCallback);