Javascript jQuery在用户交互上隐藏和显示标签
我有下面的jQuery代码,当用户与文本框交互时隐藏并显示标签。一些场景: 1.)用户焦点,标签应为50%不透明度Javascript jQuery在用户交互上隐藏和显示标签,javascript,jquery,Javascript,Jquery,我有下面的jQuery代码,当用户与文本框交互时隐藏并显示标签。一些场景: 1.)用户焦点,标签应为50%不透明度 2.)用户类型,标签应为0%不透明度 3.)用户删除所有内容但保持焦点,标签应为50%不透明度 4.)用户删除所有内容和焦点,标签的不透明度应为0% 5.)用户类型内容和焦点,标签的不透明度应为0% 所以简而言之,如果输入有值,那么没有标签,如果聚焦,它是50%,如果没有值,那么是100%不透明度 代码如下: $('label.placeholder').e
2.)用户类型,标签应为0%不透明度
3.)用户删除所有内容但保持焦点,标签应为50%不透明度
4.)用户删除所有内容和焦点,标签的不透明度应为0%
5.)用户类型内容和焦点,标签的不透明度应为0% 所以简而言之,如果输入有值,那么没有标签,如果聚焦,它是50%,如果没有值,那么是100%不透明度 代码如下:
$('label.placeholder').each(function() {
var label = $(this);
var input = label.next('input');
label.click(function()
{
input.focus();
});
input.bind('keyup keydown focus click check change paste copy', function()
{
if (input.val().length > 0)
{
label.animate({ opacity: 0 }, 200);
}
else
{
label.animate({ opacity: .6 }, 200);
}
}).bind('blur', function()
{
label.animate({ opacity: 1 }, 200);
});
但问题是,如果用户键入fast或执行多个操作,则会导致淡入淡出需要一段时间,因为它必须对每个交互回调的每个场景进行所有检查。一个很好的例子是输入一堆文本,然后再次将其全部删除,您将看到重新显示标签需要一段时间
有没有办法防止这种情况 在所有动画之前使用.stop()
。我相信这会解决问题:
$(label).stop().animate({ opacity: 1 }, 200);