You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jQuery实现同一选择器点击循环执行不同动作?

解决jQuery循环点击动作的问题

嘿,作为jQuery新手遇到这种循环逻辑的问题很正常,我来帮你理清思路!你需要的是一个状态追踪机制,用来记录当前点击处于第几次,然后对应执行不同的动作,实现1→2→1→2...的循环。

下面给你两种实用的解决方案,你可以根据需求选择:

方法一:用计数器追踪点击次数

这种方式直观易懂,适合新手理解逻辑:

// 初始化一个计数器,记录点击次数
let clickCounter = 0;

$('.menu').click(function() {
  // 每次点击计数器加1
  clickCounter++;
  
  // 判断当前是奇数次还是偶数次点击
  if (clickCounter % 2 === 1) {
    // 第1、3、5...次点击:执行第一个动作
    $(".dropleft").css("bottom", "0vh");
    $(this).css("transform", "rotate(90deg)");
  } else {
    // 第2、4、6...次点击:执行第二个动作(这里补全你没写完的代码,假设是恢复初始状态)
    $(".dropleft").css("bottom", "-100vh");
    $(this).css("transform", "rotate(0deg)");
  }
});

原理很简单:每次点击后计数器加1,用% 2(取余)判断当前是奇数还是偶数次点击,奇数对应第一个动作,偶数对应第二个动作,这样第三次点击时计数器是3,3%2=1,就会回到第一个动作,完美实现循环。

方法二:用toggleClass实现(更推荐)

这种方法把样式和逻辑分离,更符合前端开发的最佳实践,代码也更简洁:

首先在CSS里定义好激活状态的样式:

/* 菜单激活时的样式 */
.menu.active {
  transform: rotate(90deg);
}

/* 下拉栏激活时的样式 */
.dropleft.active {
  bottom: 0vh;
}

然后JS代码只需要切换类名即可:

$('.menu').click(function() {
  // 切换自身的active类
  $(this).toggleClass('active');
  // 同时切换dropleft的active类
  $(".dropleft").toggleClass('active');
});

toggleClass会自动判断元素是否有这个类:第一次点击添加类(执行第一个动作的样式),第二次点击移除类(回到初始样式,也就是你的第二个动作),第三次点击又添加类,以此循环,完全满足你的需求!而且把样式放在CSS里,后续修改样式会更方便,不用动JS代码。

如果你原来的第二个动作不是恢复初始状态,而是其他自定义样式,只需要调整CSS或者在toggle的时候做额外判断就行,灵活度很高。

内容的提问来源于stack exchange,提问作者Hugo Nicaise

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:31:03