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

jQuery点击逻辑异常:第二个emp-row初始赋值第一行内容

问题原因
  1. 全局变量污染:img、name、check是全局变量,第一个emp-row操作后,这些变量会保留之前的取值。第二次点击第二个emp-row时,if(check)会直接执行,把旧值先赋给第二行,导致显示异常。
  2. 重复绑定事件:每次点击emp-row都会给内部的employees绑定一次点击事件,多次操作后会触发多次回调,逻辑混乱。
修复方案

直接绑定employees的点击事件,通过DOM层级定位当前行对应的assign-btn区域,无需全局变量和外层emp-row的点击事件:

$(document).ready(function() {
  // 委托绑定employees的点击事件
  $(document).on('click', '.employees', function() {
    // 获取当前选中员工的图片和名称数据
    const img = $(this).find('.get-img').data('imgid');
    const name = $(this).find('.get-name').data('name');
    
    // 定位到当前行对应的assign-btn区域,更新内容
    const $currentRow = $(this).closest('.emp-row');
    $currentRow.find('.set-img').attr('src', img);
    $currentRow.find('.set-name').text(name);
  });
});
代码说明
  • 事件委托优化:直接给.employees绑定委托事件,避免重复绑定,每次点击员工项时直接触发回调。
  • 局部变量隔离:将img、name放在事件回调的局部作用域内,每个点击事件使用独立的变量,不会出现跨行数据干扰。
  • 精准DOM定位:用closest('.emp-row')找到当前点击项所属的行容器,确保只修改当前行的set-img和set-name元素,不会影响其他行。
额外规范修正

原HTML中多个empid使用了相同的id属性,违反HTML规范(id必须唯一),建议将id="empid"改为class="empid",避免DOM选择器出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:43:08