Core: Added asynchronous focus. Fixed #3559 - :focusable, :tabbable, setFocus().

This commit is contained in:
Scott González 2009-04-18 13:04:07 +00:00
parent 15788355fa
commit cedf663e2f
2 changed files with 36 additions and 0 deletions

View File

@ -25,4 +25,27 @@ test("attr - aria", function() {
equals(el.attr('aria-expanded'), 'false', 'aria expanded is false');
});
test('focus', function() {
expect(3);
var el = $('#inputTabindex0'),
// used to remove focus from the main element
other = $('#inputTabindex10');
// test original functionality
el.focus(function() {
ok(true, 'event triggered');
});
el.focus();
other.focus();
// trigger event handler + callback
stop();
el.focus(500, function() {
start();
ok(true, 'callback triggered');
});
other.focus();
});
})(jQuery);

View File

@ -135,6 +135,19 @@ if (isFF2) {
//jQuery plugins
$.fn.extend({
_focus: $.fn.focus,
focus: function(delay, fn) {
return typeof delay === 'number'
? this.each(function() {
var elem = this;
setTimeout(function() {
$(elem).focus();
(fn && fn.call(elem));
}, delay);
})
: this._focus.apply(this, arguments);
},
remove: function() {
// Safari has a native remove event which actually removes DOM elements,
// so we have to use triggerHandler instead of trigger (#3037).