У меня есть элемент <div>
содержащий элемент <form>
с полем <input>
. Этот div также содержит <button>
который скрыт через overflow: hidden.
Когда пользователь нажимает на поле ввода, его высота изменяется, а переполнение: скрытое становится переполнением: видимым. Первый эффект, который я могу достичь с помощью ввода: фокус, но у меня проблема со вторым нацеливанием на родителя. Я понимаю, что селектор не может подняться в CSS3, поэтому я попытался использовать функцию jQuery has(), но он не работает (возможно, полностью моя ошибка).
Вот что я пробовал:
<script>
$("div:has(input:focus)").addClass("visible");
</script>
Я делаю это неправильно? Что я могу сделать для достижения желаемого эффекта?
попробуй это:
$("input").focus(function(){
$(this).parents('div').css({"overflow":"visible" });
});
Что вы можете сделать, так это попытаться получить доступ к родительскому элементу, используя родительский элемент 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()
но хорошо знать другой способ.
$("input:focus").closest("div")
не работает?