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

JQuery .fadeToggle()异常:触发后元素自动淡出问题排查

问题原因及解决方案

核心问题:HTML结构错误

你的代码出现点击后元素淡入立即淡出的现象,完全是HTML标签嵌套错误导致的:

  • 原代码中,<li class="has">内部的label之后错误地闭合了.tree的<ul>标签,导致后续的隐藏<ul>被放到了.tree的<ul>外部,脱离了li.has的层级。
  • 后续的</li></ul>又试图闭合不存在的标签,浏览器会自动修正DOM结构,最终造成事件触发逻辑混乱——比如fadeToggle()被意外执行两次,直接表现为元素刚淡入就淡出。

修正后的代码

HTML(修复嵌套结构)

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="tree">
  <li class="has">
    <label class="container">ROOT<span class="total">(12) </span>
      <input type="checkbox" name="domain[]" value="ROOT">
      <span class="checkmark"></span>
    </label>
    <!-- 将隐藏ul放在li.has内部,作为label的相邻元素 -->
    <ul style="display: none;">
      <li>
        <label class="container">CHILD
          <input type="checkbox" name="subject[]" value="CHILD">
          <span class="checkmark"></span>
        </label>
      </li>
    </ul>
  </li>
</ul>

JavaScript(逻辑无需修改,结构修复后即可正常工作)

$(document).on('click', '.tree label', function(e) {
  $(this).next('ul').fadeToggle();
  e.stopPropagation();
});

补充说明

修复结构后,$(this).next('ul')能正确选中label相邻的隐藏ul,点击事件的触发逻辑也恢复正常,不会再出现重复执行fadeToggle()的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:12:34