这是我的html:.shake()触发blur事件
<div><input/></div>
,这是我的jQuery:
$('input').focus();
$('input').blur(function() { console.log('BLUR!'); });
$('div').effect('shake');
不知何故,防抖效果触发blur事件。这真的很烦人。有什么建议么?
编辑:下面的情况是类似http://jsfiddle.net/kN7tr/1/
这是我的html:.shake()触发blur事件
<div><input/></div>
,这是我的jQuery:
$('input').focus();
$('input').blur(function() { console.log('BLUR!'); });
$('div').effect('shake');
不知何故,防抖效果触发blur事件。这真的很烦人。有什么建议么?
编辑:下面的情况是类似http://jsfiddle.net/kN7tr/1/
一些挖后,看起来这是罪魁祸首http://bugs.jqueryui.com/ticket/7595
这是修复:
// Fixes #7595 - Elements lose focus when wrapped.
if (element[ 0 ] === active || $.contains(element[ 0 ], active)) {
$(active).focus();
}
(这是对4425线1.8.16如果你有兴趣 - 评论是误导,因为它是在讨论一个装饰器(与无关文字包装或任何东西))
小提琴有1.8.14,该错误被报告反对。
此修复可作为在16年1月8日,这是可以在谷歌CDN(显然,如果你下载了最新的)
好的选择!但我在我的计算机上使用1.8.16,问题依然存在...... – Randomblue
然后我会记录一个错误,或者甚至遍历代码的这一部分来查看是否存在未处理的边缘案例。 –
您可以设置focus
回输入后shake
动画完成
$('div').effect('shake', function(){
$('input').focus();
});
Worrking demo
工作周围这是附加blur
事件在shake
回调里面,并在那里设置focus
。我真的不明白为什么focus
正在消失,这就是为什么blur
正在射击。我希望这项工作可以帮助你。
工作demo
$('input').effect('shake', function(){
$('input').focus();
$('input').blur(function() { console.log('BLUR!');
});
});
仍然会导致模糊事件触发!见http://jsfiddle.net/kN7tr/5/ – Randomblue
看看我编辑的答案。 – ShankarSangoli
@Randomblue - 我没有看到像你说的那样在Chrome或IE9中发生模糊。我确实看到它失去了焦点,但是在运行小提琴时,我没有看到它每次击中时都会记录模糊......这是您所描述的发生的正确情况? –
var $focusElement;
// Keep track of the element that was focused
$(":input").focus(function() {
$focusElement = $(this);
});
$('input').focus();
$('input').blur(function() { console.log('BLUR!');
});
$('div').effect('shake', function(){
// Refocus the element
$focusElement.focus();
});
丑陋的黑客工具,还张贴Shake effect kills focus在那里确定这是一个错误。
我认为[这](http://stackoverflow.com/questions/7244558/shake-effect-kills-focus)可能会回答你的问题 – qwertymk
@qwertymk:哈哈!我在想我。更严重的是,1.8.16 – Randomblue
这个问题似乎仍然存在,你可以尝试解除模糊事件的解除绑定,并在重新绑定它们的回调中 – qwertymk