jquery - 重复函数 X 次

标签 jquery function loops

var xTcount = 3;

jQuery.fn.repeatFx = function(fn, times) {
    for(var i = 0; i < times; i++) fn();
}

$("#Art_C_M li").live('click', function() {
    var $this = $(this);
    var target = $this.hasClass('Double_It') ? 'doubler'
               : $this.hasClass('Float_R') ? 'floatR'
               : null;

    if (xTcount > 1) {repeatFx(target, xTcount);}
});

我正在尝试创建一个循环另一个函数的函数。虽然它循环的函数有所不同,但我需要一个通用的函数循环函数。我通过这个问题得到了帮助:Iterate a script X times我不想附加它,因为它现在已经过时了,我不确定是否建议这样做。

基于另一个脚本,xTcount 确实发生了变化(用户单击一系列包含数字的 div,该值被解析为 int 并存储,但为了简单起见,我在这个问题中将其保留为 3。)

doubler 和 floatR 是函数的名称。我希望使用案例解决方案来获取函数名称,并将其传递给循环函数。

我有 if 子句,这样用户就不必总是单击“1”才能发生效果。因此,只有当它大于 1 时,它才循环,否则只循环一次(这在基本函数中得到处理。)

编辑

修改了代码,以演示更明确的流程。

$(".Double_It").live('click', function() {
    repeatFx(drawCard, xTcount);
});

看来我的函数没有被调用。我向我的加倍函数添加了一个追加(文本),如果我直接调用该函数,它会起作用,并且我会得到附加的文本作为它触发的信号。但通过这个循环函数,文本永远不会显示。所以我推断该函数没有被调用。

最佳答案

删除函数名称中的引号,它应该可以工作:

var target = $this.hasClass('Double_It') ? doubler
           : $this.hasClass('Float_R') ? floatR
           : null;

当然,如果你返回 null,那么你的代码就会崩溃,因此你可能需要检查它:

if ((xTcount > 1) && (target !== null) {.....

this JSFiddle 处查看等效模型

function a() { alert("a"); }    
function b() { alert("b"); }    
function c(f){ f();}
var x = 1;  //change to '0' to see other function call
var fn = (x===0) ?  a : b;
c(fn);  //the alert will depend on whether a or b is assigned to fn

关于jquery - 重复函数 X 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6790739/

相关文章:

javascript - 单击 stopPropagation 同时保持 Bootstrap 崩溃行为

javascript - 以秒和分钟显示时间计数器

jQuery - 如何绕过全局事件

引用自身的 javascript 函数

python - 在Python 3.3中通过循环将键和值迭代到字典中

jquery - 如何在 jQuery 数组中将 '<p>' 替换为 '<li>' ?

postgresql - 返回类型 bigint 与第 3 列中的预期类型整数不匹配

python - 在Python中在列表中分割行?

postgresql - PostgreSQL 中基于游标的记录

python - 加速 python 中的 numpy 循环?