- Added _findFirstElementByTagName() which does basic DOM traversal to find the first of an element with the given nodeName. Use this in place of $.fn.closest() and $.fn.children() calls that filter with ":eq(0)".
- Avoid calling $.fn.add() if you can. The creation of the new collection is costing about 400 msecs.
- Avoid calling $() with markup for a single node, just use document.createElement() and pass it to $().
- Modified refresh() so that it manually checks for the first image in the list item or .ui-link-inherit element. This allows us to avoid executing a selector with a direct descendant and :eq(0) pseudo which is quite slow on WP 7.5 IE.
- Cache the nsNormalize() results so we don't have to call $.camelcase() every time jqmData() is called.
- Move the regexp used in our monkey patched $.find outside of the function to save some regex compilation cycles.
- Got rid of _itemApply() and moved it's functionality to the bottom of refresh(), doing finds from $list where we can, and li where we can't. Boom, at least 1200+ less function calls.
- Modified loadPage() so that if we are attempting to load the first page of the application document, that we first check to make sure it is in the DOM before returning our cached copy. If it is not in the DOM, we let it fall through to the ajax loading code so that it gets recreated. This is necessary since some developers are agressively pruning pages, including embedded ones, for various reasons.
- Moved some of the finds we used to do for every item, out of the processing loop so we do just 3 big finds. This shaves off 200-300ms on iPad iOS 4.3.5.
- Modified buttonMarkup so that it checks options against undefined before calling jqmData(). This is necessary because false is a valid option.
- Modified listview so that it doesn't check for a data-counttheme unless it actually has a count item.
- Avoid using $.each() when you can directly iterate on the collection. This avoids extra function calling overhead.
- Avoid calling jqmData() for options that are specified.
- Avoid calling $.fn.wrapInner(), creating the DOM nodes manually is much faster.
Allows submit button values to change dynamically, and update accordingly in the UI. Such as in the event a button should read "Update" instead of "Save".