Javascript jQuery在用户交互上隐藏和显示标签

Javascript jQuery在用户交互上隐藏和显示标签,javascript,jquery,Javascript,Jquery,我有下面的jQuery代码,当用户与文本框交互时隐藏并显示标签。一些场景: 1.)用户焦点,标签应为50%不透明度 2.)用户类型,标签应为0%不透明度 3.)用户删除所有内容但保持焦点,标签应为50%不透明度 4.)用户删除所有内容和焦点,标签的不透明度应为0% 5.)用户类型内容和焦点,标签的不透明度应为0% 所以简而言之,如果输入有值,那么没有标签,如果聚焦,它是50%,如果没有值,那么是100%不透明度 代码如下: $('label.placeholder').e

我有下面的jQuery代码,当用户与文本框交互时隐藏并显示标签。一些场景:

1.)用户焦点,标签应为50%不透明度
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);