每次点击同一元素的事件不同

时间:2015-12-03 20:25:33

标签: javascript jquery

如何为按钮上的每次点击触发新事件。 如何将它带入循环中,因此在“单击3”之后它再次以“单击1”开始。

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

     //click 1
     cameraTween( camera.position, 1, 1, 1 );

     //click 2
     cameraTween( camera.position, 2, 2, 2 );

     //click 3
     cameraTween( camera.position, 3, 3, 3 );

});

6 个答案:

答案 0 :(得分:2)

一种解决方案是通过.one使用递归来创建泛型函数:

function LoopEvent(selector, event, calls /*array of functions*/) {
    $(selector).one(event, function() {
        // Execute Function
        calls[0](); 

        // Send current function to the back of the array
        calls.push(calls.shift());

        // Attach next event
        LoopEvent(selector, event, calls);
    });
}

然后你可以这样称呼它:

LoopEvent("button", "click", [
  function() { cameraTween( camera.position, 1, 1, 1 ); },  
  function() { cameraTween( camera.position, 2, 2, 2 ); },
  function() { cameraTween( camera.position, 3, 3, 3 ); }
]);

<强> Example Fiddle

答案 1 :(得分:1)

创建一个变量并在click事件

中递增它
var i = 1;
$('#myButton').click(function () {
  if (i > 3)
    i = 1;
  cameraTween(camera.position, i, i, i);
  i += 1;
});

答案 2 :(得分:0)

使用某个变量来保存点击次数,并使用开关根据此变量调用不同的事件。

答案 3 :(得分:0)

var x = 0;

$('button').click(function () {
x = x++;

if (x==1){cameraTween( camera.position, 1, 1, 1 );}
else{
      if (x==2){cameraTween( camera.position, 2, 2, 2 );}
      else{
         cameraTween( camera.position, 3, 3, 3 );
      }
}
});

答案 4 :(得分:0)

int x = 5;
for (int i = 1; i <= 10; i++)
{
    Console.ResetColor();
    if (x > 5)
    {
        Console.Write(new String(' ', x - 5));
    }

    if (i % 2 == 0)
    {
        Console.BackgroundColor = ConsoleColor.DarkYellow;
    }

    x = x + 1;
    string str = "word";
    Console.WriteLine(str);
}
Console.ReadLine();

答案 5 :(得分:0)

使用变量跟踪点击次数。

var clickCount = 1;
$('button').click(function () {
     if(clickCount > 3) {
       clickCount = 1;
     }

     cameraTween( camera.position, clickCount, clickCount, clickCount );
     clickCount++;
  });