我有一个简单的 jQuery 滑动输入片段,它可以在输入元素的宽度被聚焦以使其更宽时对其进行动画处理:
$(document).ready(function() {
$('input:not([type="checkbox"], .button, .noanimate)').focus(function() {
var elemWidth = $(this).width();
$(this).animate({
width: elemWidth + 50,
}, 300);
});
$('input:not([type="checkbox"], .button, .noanimate)').focusout(function() {
var elemWidth = $(this).width();
$(this).animate({
width: elemWidth - 50,
}, 300);
});
});
直到最近,我还没有使用变量elemWidth
——而是将输入的标准宽度硬编码为 200 像素。然而,我现在有一些输入需要 400px 宽,所以我没有为每个不同大小的元素添加额外的代码,而是简单地抓住被聚焦的宽度元素并将我的 50px 添加到它。
它确实有效,但是,我发现在大型表单上,当我以足够快的速度跨字段进行选项卡时,可以同时设置 2-3 个动画,活动元素之前的元素可以缩小到比其原始宽度更远,下降到 150 像素。
我相信我知道为什么会发生这种情况(elemWidth
当我在输入之间切换时变量正在发生变化),但我不知道如何防止它。想法?