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

jQuery中toggleClass方法不存在但其余方法正常运行,是什么原因?

问题原因
  • 触发报错的核心是toggleClass为jQuery实例专属方法,你传入colapseExpend的subject是原生DOM元素,原生DOM没有该方法,所以会提示方法不存在。
  • 附加的逻辑错误:你使用for...in遍历jQuery集合的写法错误。for...in会遍历jQuery对象上所有可枚举属性(包括原型链方法、length、prevObject等内部属性),不会仅遍历你匹配到的DOM元素,整个事件绑定逻辑本身就存在问题。
  • 循环内$(i)写法错误:for...in遍历得到的i是属性名,并非对应的DOM元素,你实际选中的是不存在的元素。
修复方案
  1. 要么调用colapseExpend时传入jQuery包装后的元素,要么在函数内部先将subject包装为jQuery对象再调用jQuery方法。
  2. 替换错误的手动循环逻辑,直接使用jQuery自带的事件绑定能力,无需手动遍历集合。
修复后可运行代码
let listNode, imageNode, imageLinks;

let colapseExpend = (subject) => {
    // 包装为jQuery对象后再调用相关方法
    const $subject = $(subject);
    // toggleClass支持空格分隔多个类名,可简化写法
    $subject.toggleClass("plus minus");
    $subject.next().toggleClass("open closed");

    imageNode.attr("src", "");
    imageNode.css("display", "none");
}

$(document).ready(function () {
    listNode = $("#categories").find("h2");
    imageNode = $("#image");

    // 直接给所有匹配元素绑定点击事件,无需手动循环
    listNode.click(function (e) {
        colapseExpend(this);
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:15:08