在输入焦点上,我想检查msg类是否没有错误的类,然后做一些事情。我尝试使用以下代码,但if语句始终返回true。
的jQuery
$('form .field input').on('focus blur', function(e){
if($(this).parent().find('.msg').parent().not(':has(.err)')) {
$(this).parent().find('.msg').parent().stop()[e.type === 'focus' ? 'slideDown' : 'slideUp']();
}
})
然后我还要检查每个带有err类的msg类。如果只有1,我想在父母中选择输入。
这是我的尝试,但没有用。
if($('.msg').parent('.field').has('.err').length === 1) {
$(this).parents().find('input').select();
}
HTML
<div class="field">
<input type="text">
<div>
<div class="msg">Msg.</div>
</div>
</div>
<div class="field">
<input type="text">
<div>
<div class="msg err">Err msg.</div>
</div>
</div>
答案 0 :(得分:2)
.not()
不会返回类似.is()
的布尔值。它与.filter()
相反。返回的集合总是被评估为真实。
if ($(this).parent().find('.msg').parent().not(':has(.err)')) {
应该是:
if (!$(this).parent().find('.msg').parent().is(':has(.err)')) {
// ^ not ^^ returns boolean
答案 1 :(得分:0)
使用hasClass
$('form .field input').on('focus blur', function(e){
if(!$(this).parent().find('.msg').parent().hasClass('err')) {
$(this).parent().find('.msg').parent().stop()[e.type === 'focus' ? 'slideDown' : 'slideUp']();
}
})
if($('.msg').parent('.field').hasClass('err')) {
$(this).parents().find('input').select();
}