這是我的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