<div class="parent"> <input type="text" /> </div>
$('.parent > *')
.focus(function() {
$('.parent').addClass('focused');
})
.blur(function() {
$('.parent').removeClass('focused');
});
仅在输入字段具有值的情况下,我才尝试在div中添加一个类。 我的意思是,如果我们在输入字段中输入文本,div会自动添加一个自类。唯一的问题是我们不能提供任何类名或ID 输入。
使用此脚本,我们可以在单击输入时添加类。但是我们需要做更多。
我们能做到吗?
答案 0 :(得分:1)
您可以使用input
代替focus
。您还必须检查值以添加/删除类。请尝试以下方式:
$(document).ready(function(){
$('.parent > *').focus();
$('.parent > *')
.on('input', function() {
if($(this).val().trim() != '')
$(this).parent().addClass('focused');
else
$(this).parent().removeClass('focused');
});
});
.focused{
color:red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent">Test <input type="text" /> </div>
答案 1 :(得分:0)
使用您提供的html,它应该可以工作
$('.parent > *')
.focus(function() {
if( $(this).val().length) $(this).parent().addClass('focused');
})
.blur(function() {
if( $(this).val().length) $(this).parent().removeClass('focused');
});
OP评论后更新
<div class="some-div">Hello</div>
<div class="parent"> <input type="text" /> </div>
$('.parent > *')
.focus(function() {
$(".some-div").addClass('focused');
})
.blur(function() {
$('.some-div').removeClass('focused');
});
答案 2 :(得分:0)
好的,只需使用.parent > input
:
$('.parent > input')
.focus(function() {
$('.parent').addClass('focused');
})
.blur(function() {
$('.parent').removeClass('focused');
});
答案 3 :(得分:0)
在键盘输入,鼠标拖动,自动填充和复制粘贴上会触发input
事件。
您可以尝试以下代码-
function toggleParentClass(elem) {
console.log(elem.val());
if (elem.val().length)
elem.closest('.parent').addClass('focused');
else
elem.closest('.parent').removeClass('focused');
}
$('.parent').on('input', function() {
toggleParentClass($(this).find('input'));
});
.focused {
background-color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent">
<input type="text" />
</div>
答案 4 :(得分:0)
如何在输入字段上放置事件侦听器。
如果输入框为空,请删除该类。否则,添加所需的类。
Closest帮助您找到具有给定选择标准的最接近成员。
对于集合中的每个元素,获取与 通过测试元素本身并遍历其元素的选择器 DOM树中的祖先。
$('input').change(function(){
if( $(this).val().trim() === '' ){//Empty input box
$(this).closest('.parent').removeClass('focused');
}
else{
$(this).closest('.parent').addClass('focused');
}
}
);