1

我正在寻求创建一个数组来计算并跟踪对页面特定区域的点击;然后,我希望每次点击量都可以做一些事情。例如)通过 mp3 触发器的第 5 次单击声音。第六次点击页面抖动。

我如何编写一个数组来为每次点击添加不同的事件,为特定的点击次数分配一些东西?

4

4 回答 4

2
var clicks = 0;
$('a').click(function() {
    switch(++clicks) {
        case X:
            /* do something */
            break;
       /* ... */
    }
});

或者您可以将函数存储在数组中

var myEvents = [function1, function2, function3];
var clicks = -1;
$('a').click(function() {
    clicks++;
    if(myEvents[clicks] != undefined) myEvents[clicks]();
});
于 2013-06-30T18:12:06.200 回答
1

像这样的东西!

var actions = {
  5: 'playMusic',
  6: 'shakeDiv'     
}, 
actors = {
 doNothing: function() {/*default action; do nothing;*/},
 playMusic: function() {
     alert('Your are about to here a music now');
     /*place code for playing music here*/
   },
 shakeDiv: function() {
    alert('page is about to shake');
    /* place shake animation code here*/
  }
},
defaultActionName = 'doNothing';//default action name


var clickCount = 0;

$('yourSelectorForThepart').click(function(e) {
  clickCount++;
  doAction();
});

function doAction() {
  var actionName = actions[clickCount] || defaultActionName;
  actors[actionName]();
}

是的,你可以合并actions& actors。但我更喜欢这种维护和可读性的方法。

于 2013-06-30T18:13:52.863 回答
1

http://jsbin.com/izutav/1/edit

通过简单地创建一个事件函数数组:

var a1_Events = [shake, noise, something],
    a1_c = 0;


function shake(){
  alert('SHAKING!');
}

function noise(){
  alert('BZZZZZZZZZZZ!');
}

function something(){
  alert('SOMETHING ELSE!');
}


$('#area1').click(function(){
   a1_Events[a1_c++ % a1_Events.length]();
});

如果您不想循环您的事件,请仅使用:a1_Events[a1_c++]();

于 2013-06-30T18:22:13.647 回答
0

你可以这样做:

// put your click actions as functions here
var clickEvents = [function1, function2, function3, function4, playMP3, shakePage];
var clicks = 0;
// put your clickable object here
clickableObject.onclick = function(){
    clickEvents[clicks]();
    clicks++;
}
于 2013-06-30T18:14:04.813 回答