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

为何点击事件仅对首个dedicate__wrapper生效?求解决方法

问题分析与解决思路

你的问题核心在于事件回调里的元素获取逻辑错误:document.querySelector(".dedicate__wrapper")只会返回第一个匹配的DOM元素,所以无论你点击第二个.dedicate__wrapper,代码里始终在判断第一个元素的step1类,而非当前触发点击的那个元素。

解决步骤

1. 替换当前点击元素的获取方式

在jQuery的事件回调函数中,this指向的就是当前被点击的.dedicate__wrapper元素,直接用它来判断类名即可,不需要重新查询DOM。

2. 修正后的代码示例

原生DOM API写法

$(document).ready(function() {
    $(".dedicate__wrapper").on('click', function() {
        // 用this获取当前点击的元素
        var el2 = this;
        var el3 = document.querySelector(".config_submit");

        if (el2.classList.contains('step1')) {
            el3.classList.remove('disable');
        } else {
            el3.classList.add('disable');
        }
    });
});

全jQuery写法(更简洁)

$(document).ready(function() {
    // 提前获取config_submit元素,避免每次点击重复查询
    const $submit = $(".config_submit");
    
    $(".dedicate__wrapper").on('click', function() {
        const $current = $(this);
        if ($current.hasClass('step1')) {
            $submit.removeClass('disable');
        } else {
            $submit.addClass('disable');
        }
    });
});

3. 额外优化建议

  • 如果.config_submit页面中只有一个,建议在事件外部提前获取,减少DOM查询次数,提升性能。
  • 统一使用jQuery或原生DOM API的操作方式,避免混合写法导致的混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:35:00