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

使用jQuery on方法获取点击元素ID及类型的实现方案

解决方案

核心问题分析

你当前的事件绑定把点击事件挂在了document上,触发时this指向整个文档而非点击的图标元素,因此拿不到目标的id和状态类。同时需要明确绑定到图标元素,获取父容器的类型标识,还要处理按钮状态切换的外观更新。

修正后的代码

<link rel="stylesheet" href="//use.fontawesome.com/releases/v6.7.2/css/all.css">

<div>
  <div class="wh-loc">1</div>
  <div class="wh-active"><i id="1" class="fa-solid fa-circle fa-on"></i></div>  
  <div class="wh-name"><i id="2" class="fa-solid fa-circle fa-on"></i></div>  
  <div class="wh-address"><i id="3" class="fa-solid fa-circle fa-on"></i></div>  
</div>

<script>
// 仅绑定到图标元素,利用事件委托适配动态生成的元素
$(document).on('click', '.fa-solid.fa-circle', function() {
  const $icon = $(this);
  // 获取当前状态并切换
  const isOn = $icon.hasClass('fa-on');
  const newStatus = isOn ? 'fa-off' : 'fa-on';
  // 更新图标外观
  $icon.toggleClass('fa-on fa-off');
  
  // 获取所需数据
  const id = $icon.attr('id');
  const type = $icon.parent().attr('class'); // 父容器的类型标识
  
  console.log(`ID: ${id}, 类型: ${type}, 新状态: ${newStatus}`);
  
  // 发送AJAX请求到后端更新数据库
  $.ajax({
    url: '/your-update-url', // 替换成你的后端接口地址
    method: 'POST',
    data: {
      id: id,
      type: type,
      status: newStatus
    },
    success: function(response) {
      console.log('更新成功:', response);
    },
    error: function(xhr, status, error) {
      console.error('更新失败:', error);
      // 若更新失败,恢复原状态
      $icon.toggleClass('fa-on fa-off');
    }
  });
});
</script>

关键修改点

  • 事件委托目标改为.fa-solid.fa-circle,确保点击图标时this指向正确元素
  • 使用toggleClass一键切换fa-on和fa-off类,自动更新按钮外观
  • 通过parent().attr('class')获取父容器的类型(如wh-active)
  • 添加AJAX请求,携带id、type、status参数,同时处理请求失败时的状态回滚,避免界面与数据库状态不一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 21:32:38