【问题标题】:jquery array/call function from array in orderjquery数组/按顺序从数组调用函数
【发布时间】:2010-02-05 14:29:30
【问题描述】:

我正在做一个项目,我有一堆函数,我想在单击按钮时按特定顺序逐个调用它们。一旦执行了一个功能,我不想再次使用,我想继续下一个。

另一位 S.O 用户建议我需要使用数组,但我仍在学习 jQuery 并且不确定如何做到这一点,谁能让我朝着正确的方向开始?

非常感谢。

【问题讨论】:

    标签: jquery arrays


    【解决方案1】:

    假设你有这样的功能:

    function foo() { doSomeStuff; }
    function bar() { doSomeOhterStuff; }
    

    或者,另一种但相同的语法:

    var foo = function() { doSomeStuff; }
    var bar = function() { doSomeOhterStuff; }
    

    然后您可以从这些函数名称中创建一个数组并对其进行迭代:

    var functions = ['foo', 'bar'];
    
    for(var i = 0; i <= functions.length; i++) {
        window[functions[i]]();
    }
    

    或者您可以将函数直接传递给数组:

    var functions = [foo, bar];
    
    for(var i = 0; i <= functions.length; i++) {
        func();
    }
    

    将它们插入数组的顺序决定了它们的执行顺序,每个函数只会执行一次。希望这会有所帮助。

    【讨论】:

    • 是的,它确实非常感谢我将解决这个问题的帮助。一个问题是这个jquery?我通常习惯于在函数之前的某个地方看到 $ 。如果这是一个愚蠢的问题,我很抱歉!
    • 我会把我的例子添加到你的末尾作为一种恭维。
    • 不,这只是普通的旧 JavaScript,不需要 jQuery 即可工作。
    • @mtwallet:不,这只是 javascript,不需要 jquery。
    • 非常感谢大家的帮助,我将对此进行试验。最后一个问题我认为我可以混合使用 Javascript 和 JQuery。我知道 Jquery 是 Javascript,但我不确定是否会出现像 Mootools 和 Jquery 这样的冲突。
    【解决方案2】:

    示例代码:

    function fnc1(){/* some code in here */};
    function fnc2(){/* some code in here */};
    function fnc3(){/* some code in here */};
    
    var fncs = [ fnc1, fnc2, fnc3 ];
    $("buttonId").click(function(){
        var currentFunction = (fncs.shift()); // removes first element from array
        if(currentFunction){
            currentFunction(); 
        }else{
            alert('No more functions available');
        }
    });
    

    【讨论】:

    • 这会每次点击调用一个函数还是逐个运行所有 4 个函数?
    • 不,会一一调用。但是,现在我明白了你想要什么,你想要什么,每次你点击按钮时,都会执行不同的功能。我会更改我的答案,使其符合您的要求:)
    • 太好了!感谢您的帮助
    • 很想在这里看到@nemisj 的原始答案,因为它解决了我的问题。
    【解决方案3】:
    var inarr = [func1,func2,func3];
    
    for (afunc in inarr) {
       afunc();
    }
    

    【讨论】:

    • 我认为,您的代码有误。首先,使用 for...in 循环遍历数组是一种不好的做法。第二个,也许你想指定“inarr”而不是 object ?
    猜你喜欢
    • 2012-03-11
    • 1970-01-01
    • 2011-06-20
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 2014-09-15
    • 1970-01-01
    相关资源
    最近更新 更多