jQuery выбирает элемент, родительский элемент которого не скрыт с помощью Hide()

#javascript #html #jquery #css

#javascript #HTML #jquery #css

Вопрос:

У меня есть следующий HTML:

 <div id="myContainer">
 <div id="containerHeader">
  ...
 </div>
 <div id="containerBody">
  <input class="form-control mr-sm-2" id="titleInput"/>
 </div>
</div>
 

Я скрываю его, используя $("#myContainer").hide() со страницы. На его месте, на той же странице, я показываю другой компонент, который также использует тот же HTML (MyContainer) с теми же идентификаторами, и он виден на нем.

Я хочу выбрать дочерний элемент (ввод) элемента div (MyContainer), который не скрыт.

Я пробовал использовать $("#titleInput:visible").val() , но он по-прежнему выдает мне значение (пустое) скрытого компонента. Я не мог понять, как я могу получить значение дочернего компонента, для родительского элемента которого не было установлено значение hidden . Любое предложение будет оценено. Спасибо

Комментарии:

1. Почему бы вам не использовать ванильный javascript вместо jquery.

2. вы никогда не должны использовать один и тот же идентификатор более одного раза. Это недопустимый HTML и всегда создает проблемы.

3. по сути, это компонент представления в asp.net ядро mvc. этот компонент представления используется повторно. Один скрыт, а другой вызывается на его месте.

4. Вы правы @caramba, даже если это компонент представления, идентификатор не должен быть одинаковым (особенно когда один компонент скрыт, а другой виден). Переключение на имя класса решило проблему.

Ответ №1:

Я хочу выбрать дочерний элемент (ввод) элемента div (MyContainer), который не скрыт.

 $("#myContainer:visible input")
 

выберет любой ввод внутри #myContainer , при условии, что #myContainer он виден на странице. Смотрите: https://api.jquery.com/visible-selector /

Комментарии:

1. Спасибо за помощь. Это правильно, но в моем случае это была проблема с двумя компонентами, имеющими одинаковый идентификатор (один скрытый и один видимый), как указано в комментарии @caramba

2. @GMDev Предположим, что вы были бы кем-то, кто достигает этой темы через поиск Google, а заголовок вопроса гласит: «jQuery выбирает элемент, родительский элемент которого не скрыт с помощью Hide ()» … Я бы сказал, что если он отвечает на этот вопрос, это имеет значение.