jQuery震動效果似乎殺死了被震動元素的焦點。例如(見http://jsfiddle.net/xSNBp/)震動效果殺死焦點
$('input').focus().effect('shake', { times: 3, distance: 2 }, 30);
殺死的焦點。這是一個錯誤?我的問題是,我不知道當搖動效果被觸發時當前聚焦的是什麼元素,所以我無法重新調整焦點。有什麼建議麼?
(如果這是一個錯誤,我該怎麼辦?)
jQuery震動效果似乎殺死了被震動元素的焦點。例如(見http://jsfiddle.net/xSNBp/)震動效果殺死焦點
$('input').focus().effect('shake', { times: 3, distance: 2 }, 30);
殺死的焦點。這是一個錯誤?我的問題是,我不知道當搖動效果被觸發時當前聚焦的是什麼元素,所以我無法重新調整焦點。有什麼建議麼?
(如果這是一個錯誤,我該怎麼辦?)
我們最近推a commit掌握/ 1.8修復重點問題進行了一些影響。你有沒有嘗試過使用git的jQuery UI版本?甚至UI 1.8.16?
請參閱http://bugs.jqueryui.com/ticket/7595瞭解調用該修復程序的錯誤。
下面是應該修復它爲你老年1.8代碼解決方法:
function doShake(elem, opts, duration) {
var active = document.activeElement;
elem.effect("shake", opts, duration, fixFocus);
fixFocus();
function fixFocus() {
if (active === elem[0] || $.contains(elem[0], active)) {
$(active).focus();
}
}
}
如果這不是您所遇到,請讓我們知道的bug跟蹤系統的問題。
它發生的原因是,當你「包裝」或附加一個焦點元素到DOM中的其他地方 - 它失去了焦點。所以我們必須添加支票createWrapper
和removeWrapper
以保持焦點。
+1看到jQueryUI團隊的成員進來解決問題時,它非常棒。 – Loktar
那就是當你將一個堆棧溢出問題鏈接到一個bug ticket時會發生什麼:http://bugs.jqueryui.com/ticket/7681 :) – gnarf
使用1.8.16取得了訣竅!謝謝gnarf。 – Randomblue
您可以嘗試以下操作。基本上,您只需將元素保存爲焦點,以便在動畫完成後您可以在之後重新對焦。
var $focusElement;
$(":input").focus(function() {
$focusElement = $(this);
});
// focus some random element, will be saved in the function above
$('#textTwo').focus();
$('input').effect('shake', { times: 3, distance: 2 }, 30,
function(){
// Refocus the element
$focusElement.focus();
});
如何做這種方式:
$('input').keypress(function() {
var el = $(this);
el.effect('shake', {
times: 10,
distance: 5
}, 30, function() {
el.focus()
});
})
嗯不管是搖晃什麼元素,你說,頁面上的任何元素失去焦點? – Loktar
@Loktar:是的。那麼,準確地說,我正在搖動一羣孩子的父母。孩子們失去焦點。 – Randomblue
是的,它看起來像是一個疏忽,而不是一個錯誤。提高票價http://bugs.jqueryui.com/ – redsquare