Выбор CSS-класса дочерних элементов ввода

Я использую следующий селектор для установки / удаления отключенных атрибутов на моих элементах ввода, после нажатия кнопки:

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" применяется к таблице, а не к входным данным, он не игнорирует его и, таким образом, удаляет тег "disabled".

Теперь, прежде чем кто-либо предложит - нет, я не могу добавить класс CSS "cascadeReset" к элементу ввода. Я посмотрел далеко и широко, и.NET, кажется, не предоставляет способ сделать это. Самое близкое, что я мог сделать, это обернуть ввод тегом span, который имел класс.

Тем не менее, мне кажется, что я должен быть в состоянии изменить свой селектор jQuery, чтобы каким-то образом исключить ввод.

Есть идеи? Самое близкое, что я могу придумать, - это как-то сказать селектору взглянуть на родительский элемент, но А) я не уверен, как написать это, и Б) мне кажется очень легким иметь этот обратный огонь и в конечном итоге игнорировать элементы, я бы предпочел это не так.

1 ответ

Решение

Вероятно, это ужасно не работает (по крайней мере, теоретически; на маленькой странице это, вероятно, не имеет значения), но вы можете ограничить входные данные, являющиеся потомками.cascadeReset, примерно так:

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

Чтобы применить к вашей конкретной ситуации:

var parentElement = $("#startingClass");
parentElement.find(":input").not(".dont-enable").not(".cascadeReset input").removeAttr('disabled');
Другие вопросы по тегам