.shake()触发模糊事件

时间:2011-09-02 00:49:23

标签: jquery

这是我的HTML:

<div><input/></div>

这是我的jQuery:

$('input').focus();
$('input').blur(function () { console.log('BLUR!'); });
$('div').effect('shake');

请参阅http://jsfiddle.net/kN7tr/

不知何故,摇晃效果会触发模糊事件。这真的很烦人。有什么建议吗?

编辑:以下情况类似http://jsfiddle.net/kN7tr/1/

3 个答案:

答案 0 :(得分:2)

经过一番挖掘,看起来这就是罪魁祸首http://bugs.jqueryui.com/ticket/7595

这是修复:

// Fixes #7595 - Elements lose focus when wrapped.
if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
    $( active ).focus();
}

(如果您感兴趣的话,这是1.8.16的第4425行 - 该评论具有误导性,因为它正在谈论装饰器(与文字包装或任何事情无关))

Fiddle有1.8.14,报告了该bug。

此修复程序在1.8.16中可用,可在Google CDN上获得(显然,如果您下载了最新版本)

答案 1 :(得分:0)

您可以在focus动画完成后将shake设置回输入

$('div').effect('shake', function(){
    $('input').focus();
});

警告 demo

解决此问题的方法是在blur回调中附加shake事件,并在其中设置focus。我真的不明白为什么focus正在消失,这就是为什么blur正在解雇。我希望这项工作可以帮助你。

正在使用 demo

$('input').effect('shake', function(){
    $('input').focus();
    $('input').blur(function () { console.log('BLUR!');
    });
});

答案 2 :(得分:0)

<强> Live Demo

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,确定这是一个错误。