Управление родительским элементом на основе дочернего ввода: focus

0

У меня есть элемент <div> содержащий элемент <form> с полем <input>. Этот div также содержит <button> который скрыт через overflow: hidden.

иллюстрация

Когда пользователь нажимает на поле ввода, его высота изменяется, а переполнение: скрытое становится переполнением: видимым. Первый эффект, который я могу достичь с помощью ввода: фокус, но у меня проблема со вторым нацеливанием на родителя. Я понимаю, что селектор не может подняться в CSS3, поэтому я попытался использовать функцию jQuery has(), но он не работает (возможно, полностью моя ошибка).

Вот что я пробовал:

<script>
  $("div:has(input:focus)").addClass("visible");
</script>

Я делаю это неправильно? Что я могу сделать для достижения желаемого эффекта?

  • 0
    $("input:focus").closest("div") не работает?
Теги:

2 ответа

0
Лучший ответ

попробуй это:

$("input").focus(function(){
  $(this).parents('div').css({"overflow":"visible" });
});
  • 0
    Не работает для меня Я также пытаюсь нацелиться на родителя <div> - разве это не нацеливается на сам ввод?
  • 0
    Вы имеете в виду, что вам нужно сделать div как overflow: visible? проверьте мой ответ еще раз.
Показать ещё 1 комментарий
0

Что вы можете сделать, так это попытаться получить доступ к родительскому элементу, используя родительский элемент jQuery parent()

var input = $('input');
input.on('focus', function(e) {
    var form = input.parent();
    var div = form.parent()[0];
    // Do your css customization here
});

Вы также можете попробовать использовать метод closest()

var input = $('input');
input.on('focus', function(e) {
    var div = input.closest('div');
    // Do your css customization here
});

Лично я предпочитаю метод closest() но хорошо знать другой способ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню