jQuery-:focus Triggering When Switching Windows/Tabs

标签 jquery css jquery-animate focus onfocus

我正在尝试创建一个搜索栏,在 :focus 上,会在其自身内部触发一个动画。正在 jQuery 中调用动画。

For better clarification, the search bar can accessed by clicking here.

我遇到的问题是在关闭浏览器或单击不同的浏览器选项卡时引起的。如果选择了搜索栏 (:focus),则会再次触发动画并导致搜索栏(及其定位)偏离其原始位置。如果您出于任何原因右键单击搜索栏,也会发生这种情况。

jQuery 的一部分:

var search = $('.searchField');
var searchButton = $('.searchSubmit');
var searchWidth = $('.searchField').innerWidth();
var searchButtonWidth = $('.searchSubmit').innerWidth();

search.on('focus', function() {
    search.animate({ right: '+='+searchButtonWidth }, 800);
    searchButton.animate({ left: '+='+searchWidth }, 800);
});
search.on('focusout', function() {
    search.animate({ right: '-='+searchButtonWidth }, 800);
    searchButton.animate({ left: '-='+searchWidth }, 800);
});

最佳答案

jQuery 动画和 css 转换之间似乎存在冲突。如果您删除 css 中的所有过渡标签,它将按预期工作。您可以使用绝对值而不是相对 += 或 -= 偏移量:

search.on('focus', function() {
    search.animate({ left: 0 }, 800);
    searchButton.animate({ left: searchWidth }, 800);  
}).on('focusout', function() {
    search.animate({ left: searchButtonWidth }, 800);
    searchButton.animate({ left: 0 }, 800);
});

您需要将父元素样式设置为position: relative;

您也可以试试这个插件:http://playground.benbarnett.net/jquery-animate-enhanced/

关于jQuery-:focus Triggering When Switching Windows/Tabs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914519/

相关文章:

css - 如何使用 bootstrap 3 将字形图标居中放置在圆圈内

jquery - 使用 jquery 平滑地增加图像的大小

javascript - jquery中append的反义词是什么?

javascript - 当另一个元素变为事件状态时,jQuery 更改一个元素的 css

javascript - JQuery 循环重复结果

html - 滚动=不!不隐藏滚动条

html - 如何在具有多个背景的 CSS3 中重复图像?

javascript - 根据输入框选项选择下拉选项

css - 链接悬停动画下划线