1

好吧,让我们看看我能不能描述一下。

我有一些前一段时间创建的功能,并且可以流畅地工作。然而,有一个新的期望规范,所以不必重写代码库,也不必加倍代码来实现相同的效果,我试图弄清楚如何让一些东西跳跃在同一函数内的代码中返回更高的位置以重复该函数的运行,而不是在下面再次执行相同的代码。

我所拥有的是基于点击的触发器,即:

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

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

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

*现在新的要求就是关闭它并打开一个新元素。
我已经关闭了现有的,并做我想做的一切,除了新元素的数量高于当前条件。

知道 javascript 中没有“转到”类型的逻辑(或者我最后知道的)。我唯一能想到的就是从上面获取相同的代码并将其置于条件下,将代码加倍并具有相同位的 2 个副本。我想避免这种情况,但想不出办法。所以我在这里寻找想法

4

2 回答 2

4

知道 javascript 中没有“转到”类型的逻辑(或者我最后知道的)。我唯一能想到的就是从上面获取相同的代码并将其置于条件下,将代码加倍并具有相同位的 2 个副本。我想避免这种情况,但想不出办法。所以我在这里寻找想法

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

因此,如果您想运行所有操作而不考虑条件语句,则如下所示:

...
if(condition){
  actionA();
}
if(condition2){
  actionB();
}
...

$('.selector').click(function(){
    actionA();
    actionB();
});    
于 2013-02-08T18:07:38.653 回答
1

你对这种模式很熟悉,对吧?

var aCallback =  function(){........};
$('.selector').click(aCallback);
于 2013-02-08T18:14:55.153 回答