Удалить / добавить класс CSS при вводе фокус / размытие
у меня есть форма с полями ввода, и немного <div>
справа от каждого входа с небольшим описанием. Я хочу включить класс CSS для каждого входа <div>
С его собственным описанием.
Я привел здесь рабочий пример:http://jsfiddle.net/VL2FH/8/.
Это использует <div>
: наведите курсор на состояние фокуса входного сигнала.
что я хочу спросить: есть ли какой-то "ярлык", поэтому мне не нужно сделать:
$('#submit_name').bind('blur', function(){
$('#submit_name-desc').removeClass('input-desc-hover').addClass('input-desc');
});
$('#submit_name').bind('focus', function(){
$('#submit_name-desc').removeClass('input-desc').addClass('input-desc-hover');
});
для каждого поля ввода в форме.
4 ответов
вы можете обобщить focus and blur
обратный вызов, как это
$('input').on('blur', function(){
$(this).next('div').removeClass('input-desc-hover').addClass('input-desc');
}).on('focus', function(){
$(this).next('div').removeClass('input-desc').addClass('input-desc-hover');
});
если ваше описание divs
находятся рядом с элементом ввода, он будет работать нормально.
и лучше использовать .on()
для привязки событий.
вы также можете достичь того же эффекта в CSS только с помощью соседнего селектора sibling +
Так что любой .input-desc
непосредственно после сфокусированного ввода будут применяться различные правила:
input:focus + .input-desc {
cursor: default;
width: 265px;
-moz-box-shadow: 0px 2px 5px #aaaaaa;
-webkit-box-shadow: 0px 2px 5px #aaaaaa;
box-shadow: 0px 2px 5px #aaaaaa;
animation:desc 0.3s;
-moz-animation:desc 0.3s; /* Firefox */
-webkit-animation:desc 0.3s; /* Safari and Chrome */
}
соседний селектор братьев и сестер поддерживается в современных браузерах и Internet Explorer с версии 8. ( http://reference.sitepoint.com/css/adjacentsiblingselector )
вот скрипка:http://jsfiddle.net/VL2FH/14/
проверьте этот ниже пример программы
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$('#submit_name').bind('blur', function()
{
$('#submit_name-desc').removeClass('cls1').addClass('cls2');
});
$('#submit_name').bind('focus', function()
{
$('#submit_name-desc').removeClass('cls2').addClass('cls1');
});
});
</script>
<style>
.cls1
{
background-color: #ccc;
}
.cls2
{
background-color: #fff;
}
.submit_name-desc
{
height: 30px;
border: 1px;
}
</style>
</head>
<body>
<input type="text" id="submit_name" />
<div id="submit_name-desc">
Name Description
</div>
</body>
</html>
используйте классы вместо идентификаторов для выбора элементов. Если ваши входные элементы имеют submit-name
класс и ваши описания desc
класс, вы можете сделать это так:
$('.submit-name').bind('blur', function(){
$("~ .desc", this).first().removeClass('input-desc-hover').addClass('input-desc');
}).bind('focus', function(){
$("~ .desc", this).first().removeClass('input-desc').addClass('input-desc-hover');
});
$("~ .desc", this).first()
будет выбрать первый брат входного элемента (this
) С класс desc
.
вот обновленный jsFiddle для этого:http://jsfiddle.net/miroslav/VL2FH/13/
редактировать
Джой С $(this).next()
гораздо лучше, хотя.