- Modified findClosestEnabledButton() so that instead of checking for existence of ele.className, before using it, that it check for typeof ele.className === 'string'. This prevents us from looking at the className property of SVG elements which actually use type SVGAnimatedString which does not have the split() function in its API.
- Use $.data() instead of $.fn.data() in buttonMarkup().
- Avoid excess function overhead with a filtered children() call by walking the DOM ourselves in listview code.
- 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.
Also, fixed a bug in textinput.js that was placing a ui-body-null class on the input element when a data-theme was not specified directly on the input.
- Internally, each plugin self-initializes by binding to the pagecreate event.
- Unit tests have been added and adjusted to support some internal changes involved in this commit.
- In the process, the portions of the page plugin that were used to enhance the header,content,and footer sections of a native-app style page layout are now located in jquery.mobile.page.sections.js.
- No public API options have changed, except that the page plugin no longer has options for keepNative, and degradeInputs, as plugins now handle these internally (keepNative was never documented, and degradeInputs only affected slider, so it lives there now. Page options related to the page sections are now located in the page.sections script, but they are still configurable via the page plugin's options api.
- Make, Ant, and index files are updated with a new load order for all JS files.
- Modified vmouse code so that it uses $.data() instead of $().data() which is significantly faster.
- Modified the navigation and buttonMarkup code so they stop using live(). The vmouse code triggers several events during the touch events, which in turn causes the underlying event code to call $.closest() with the selector used during the live() call to figure out if the event should be handled. This turns out to be very expensive, so instead, we now just bind directly to the document, and walk the DOM manually to figure out if we should handle it. This is much faster since we are avoid triggering multiple nested function calls.
- Modified the button markup behavior so that it uses the virtual mouse events and adds the ui-btn-active class on vmousedown, and then removes it on vmousemove or vmouseup.