0

我试图让一个 div 框充当多个功能的主按钮;并且这些函数会一个接一个地触发;但每个新的 CLICK。例如,单击 = 函数触发。单击 = 行触发中的下一个函数,依此类推。目前我有以下; 这很好,但它不会在编码时连续触发这些功能,根据需要每次点击;相继。在“ http://bit.ly/10BW89N ”现场演示我的困境

那么如何创建一个按钮和 30 个每次点击都会调用的函数。如果定义了函数,它将调用该函数,否则它会提醒点击次数?

$(document).ready(function () {
    var a1_Events = [function1, function2, function3, function4, function5, function6, function7, function8],
        a1_c = 0;
    function function1() {
        alert('Click 1!');
    }
    function function2() {
        alert('Click 2!');
    }
    function function3() {
        $("#area1").hide();
        $("#area2").show();
        alert('Click 3!');

    }

    function function4() {
        alert('Click 4!');
    }

    function function5() {
        alert('Click 5!');
    }
    function function6() {
        $("#bg_div").hide(0).delay(1500).show(0);
        $("#bg_skew").show(0).delay(1500).hide(0);
        alert('Click 6!');

    }
    function function7() {
        alert('Click 7!'); 
    }
    function function8() {
        $("#area1").hide(0).delay(1500).show(0);
        $("#area2").hide(0).delay(1500).show(0); 
        $("#sound1").show(0).delay(4500).hide(0);

            document.getElementById("id1").play(); 

        $("#hammer").show(0).delay(1500).hide(0);
        $("#youwin").show(0).delay(3500).hide(0);
        alert('Click 8!');
    }

    $('#area1').click(function () {
        a1_Events[a1_c++ % a1_Events.length]();
    });
    $("#area2").click(function () {
        $("#area1").show();
        $("#area2").hide();
          alert('Click 9!');
    });
});

function alert(msg) {
    $("#alert").text(msg).show(0).delay(1500).hide(0);
}
4

3 回答 3

0

你也可以试试这个:

$(document).ready(function () {

var a1_Events = function1,
 a1_c = 0;

function function1() {
a1_Events=function2;
    alert('Click 1!');
}
function function2() {
a1_Events=function3;
    alert('Click 2!');
}
function function3() {
a1_Events=function4;
    $("#area1").hide();
    $("#area2").show();
    alert('Click 3!');
}.... so on
于 2013-07-06T05:59:18.020 回答
0

我会试试这个:

var a1_Events = [function1, function2, function3, function4, function5, function6, function7, function8];


$('#area1').click(function () {
    if (a1_Events.length > 0)
    {
        var tfunc = a1_Events.shift();
        tfunc();
    }
    else
    {
       // all functions have been executed
    }
});

此代码在执行时从数组中删除每个函数,直到它到达末尾。您仍然需要原始代码中的所有函数声明。

于 2013-07-05T04:04:37.140 回答
0

您可以根据按钮/div 被单击的次数使用switchor语句来简化代码。if每个案例都会控制你的行动,触发你的功能,无论什么......

$('button').click(function(){

  ++funcNum;

  switch(funcNum){
    case 1:
    alert('This is click ' + funcNum);
    break;

这是一个示例小提琴 - http://jsfiddle.net/juf5u/2

于 2013-07-05T04:05:56.623 回答