选择子输入元素' CSS class

Selecting child input elements' CSS class

我正在使用以下选择器 set/remove 在我的输入元素上禁用属性,点击按钮时:

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

我目前面临的问题是 .NET 以糟糕的方式呈现 RadioButtonLists:

<div id="startingClass">
    <table class="cascadeReset" id="tableID">
        <tbody>
            <tr>
                <td>
                    <input name="generatedID" disabled="disabled" id="generatedID" type="radio" value="12">
                    <label for="generatedID">Alternate</label>
                </td>
            </tr>
        </tbody>
    </table>
</div>

所以,jQuery 选择器在上面的例子中找到输入,因为 "cascadeReset" class 被应用到 table,而不是输入,它并没有忽略它,因此正在删除 "disabled" 标签。

现在,在任何人建议之前 - 不,我无法将 CSS class "cascadeReset" 添加到输入元素。我看得很远,.NET 似乎没有提供这样做的方法。我能做的最接近的事情是用一个带有 class.

的 span 标签包装输入

不过,在我看来我应该能够修改我的 jQuery 选择器以某种方式仍然排除输入。

有什么想法吗?我能想到的最接近的方法是以某种方式告诉选择器查看父元素,但是 A) 我不确定如何编写它,并且 B) 我觉得很容易适得其反并最终忽略我宁愿不要的元素。

它的性能可能非常差(至少理论上是这样;在小页面上它可能无关紧要)但是您可以像这样限制 .cascadeReset 的子项的输入:

$("input").not(".cascadeReset input");

适用于您的具体情况:

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