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

jQuery选择子输入元素CSS类遇.NET RadioButtonList渲染问题求助

解决.NET RadioButtonList渲染导致jQuery过滤失效的问题

首先咱们得揪出问题的根源:你当前用的.not(".cascadeReset")是直接筛选自身带有.cascadeReset类的<input>元素,但.NET把RadioButtonList渲染成了一个带.cascadeReset类的<table>,里面的<input>本身并没有这个类——这就导致你的过滤规则根本没命中这些目标input,自然出现功能异常了。

修正后的jQuery代码方案

你需要调整选择逻辑,改成检查每个input的祖先元素是否包含.cascadeReset类,再排除这些input。这里提供两种可行写法:

写法一:结合.not()与.closest()

var parentElement = $("#startingClass");
parentElement.find(":input")
  .not(".dont-enable")
  .not(function() {
    // 排除那些祖先元素中有.cascadeReset的input
    return $(this).closest(".cascadeReset").length > 0;
  })
  .removeAttr('disabled');

写法二:更直观的排除子元素

如果你的场景中.cascadeReset只会出现在RadioButtonList生成的table上,还可以直接定位排除该类元素下的所有input:

var parentElement = $("#startingClass");
parentElement.find(":input:not(.dont-enable):not(.cascadeReset input)")
  .removeAttr('disabled');

为什么原来的代码不行?

再对照一下.NET渲染的实际结构就能明白:

你原来的.not(".cascadeReset")只会排除自身带类的input,但这里的input嵌套在带类的table里,input本身没有这个类,所以完全没被筛选掉。而上面的修正代码要么向上查找祖先元素,要么直接定位类元素下的子input,精准命中需要排除的目标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:34:54