Выбор CSS-класса дочерних элементов ввода - PullRequest
0 голосов
/ 25 апреля 2018

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

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

Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что .NET визуализирует RadioButtonLists в ужасном состоянии.way:

<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 Ответ

0 голосов
/ 25 апреля 2018

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

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

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

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