Fix focus behavior during ui animations that require a wrapper. #411
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When any kind of DOM manipulation occurs (replaceNode, insertChild etc), any elements being manipulated loose their focus status (as of Chrome 12, Firefox 5). I couldn't find any spec that clarifies why that is, but it does appear to happen consistently.
IMO, it's reasonable to expect end-users to deal with this during explicit DOM manipulation calls ($.html(), $ .after(), etc), but not necessarily so during an animation. The fact that jquery.ui animations end up performing DOM manipulations implicitly is not at all obvious to the user and thus the focus-loosing behavior is unexpected and worth avoiding.
This is probably not a very common use case but $.effects.removeWrapper really is the only place to fix it (there are no callbacks in which to detect the previously focused element) and the overhead doesn't strike me as terribly noticeable considering it only occurs at the end of an animation.
Cheers,