Jquery-同一对象、多次单击、多个函数

Jquery-同一对象、多次单击、多个函数,jquery,function,click,Jquery,Function,Click,我试图找出实现效果的最佳方法,单击object1一次并生成一个函数(设置对象a的动画),然后再次单击object1并生成另一个函数(设置另一个对象B的动画),等等 有人能给我一些术语来解释这里用什么吗?我确实知道如何通过jQuery/CSS添加/删除/切换类实现动画,但我正在寻找最有效的方法 您正在寻找JQuery“一次性”事件处理程序 这将在第一次触发单击事件时运行first函数,然后将单击事件重新绑定到next函数以进行所有后续单击 编辑:交替,如果您有两个,并且希望它们交替,您可以使用V

我试图找出实现效果的最佳方法,单击object1一次并生成一个函数(设置对象a的动画),然后再次单击object1并生成另一个函数(设置另一个对象B的动画),等等


有人能给我一些术语来解释这里用什么吗?我确实知道如何通过jQuery/CSS添加/删除/切换类实现动画,但我正在寻找最有效的方法

您正在寻找JQuery“一次性”事件处理程序

这将在第一次触发单击事件时运行
first
函数,然后将单击事件重新绑定到
next
函数以进行所有后续单击

编辑:交替,如果您有两个,并且希望它们交替,您可以使用Vishal的
切换建议

编辑2

另一种选择是在事件处理程序中保留一个计数器,如下所示:

function fireA() { /*...*/ }
function fireB() { /*...*/ }
function fireC() { /*...*/ }

$('#button').click(function() {
   var events = [fireA, fireB, fireC];

   //declare counter
   if(!this.counter) { this.counter = 0; }

   events[this.counter]();
   this.counter = (this.counter + 1) % 3;
});

如果您只想在两个函数之间切换(第一个函数将在第一次单击时执行,第二个函数将在第二次单击时执行,然后再次执行,依此类推),那么您可以使用jQuery.toggle()函数。我想更好的描述效果的方法是一把枪发射多发子弹-1红色、2蓝色、3绿色。每次你点击枪,它就会发射3颗子弹中的一颗……对不起,我没有足够的工作来展示一个例子!然后您可以使用@andrewdotnich给出的示例,但是您必须小心使用它,因为如果您没有正确使用它,它可能会绑定多个单击事件。否则,您可以保留一个计数器,并在每次单击时检查它的值,然后根据它执行相应的功能。我更新了我的答案,我认为这正是您需要的…我有一个爆炸与此第二次编辑替代-谢谢andrewdotnich!进一步的重构:如果事件的机制是相同的,但发生在不同的元素/对象上,则可以重写它,以便处理程序调用单个函数,将要设置动画的元素/对象作为参数传递。然后,您可以简单地为函数保留一个潜在参数数组,而不是对函数的引用。事件确实有点不同——每个事件在不同的地点结束。唯一剩下的因素是我正在计算一个if子句——如果一个类在一个对象上为true,那么函数fireA,等等……如果函数上的类为false,“子弹”将简单地消失。快到了!谢谢你的帮助。
function fireA() { /*...*/ }
function fireB() { /*...*/ }
function fireC() { /*...*/ }

$('#button').click(function() {
   var events = [fireA, fireB, fireC];

   //declare counter
   if(!this.counter) { this.counter = 0; }

   events[this.counter]();
   this.counter = (this.counter + 1) % 3;
});