diff --git a/js/widgets/listview.autodividers.js b/js/widgets/listview.autodividers.js index c262a26cc5a..977648a2c44 100644 --- a/js/widgets/listview.autodividers.js +++ b/js/widgets/listview.autodividers.js @@ -26,12 +26,11 @@ $.widget( "mobile.listview", $.mobile.listview, { autodividersSelector: defaultAutodividersSelector }, - _afterListviewRefresh: function() { - var el = this.element; - this._off( el, "listviewafterrefresh" ); - this._replaceDividers(); - this.refresh(); - this._on( el, { listviewafterrefresh: "_afterListviewRefresh" } ); + _beforeListviewRefresh: function() { + if ( this.options.autodividers ) { + this._replaceDividers(); + this._superApply( arguments ); + } }, _replaceDividers: function() { @@ -40,9 +39,9 @@ $.widget( "mobile.listview", $.mobile.listview, { list = this.element, divider; - list.find( "li:jqmData(role='list-divider')" ).remove(); + list.children( "li:jqmData(role='list-divider')" ).remove(); - lis = list.find( "li" ); + lis = list.children( "li" ); for ( i = 0; i < lis.length ; i++ ) { li = lis[ i ]; @@ -57,16 +56,6 @@ $.widget( "mobile.listview", $.mobile.listview, { lastDividerText = dividerText; } - }, - - _create: function() { - this._super(); - - if ( !this.options.autodividers ) { - return; - } - - this._afterListviewRefresh(); } }); diff --git a/js/widgets/listview.hidedividers.js b/js/widgets/listview.hidedividers.js index efe1b42bac0..fe67f2f7bcc 100644 --- a/js/widgets/listview.hidedividers.js +++ b/js/widgets/listview.hidedividers.js @@ -14,7 +14,7 @@ $.widget( "mobile.listview", $.mobile.listview, { hidedividers: false }, - refresh: function() { + _afterListviewRefresh: function() { var items, idx, item, hideDivider = true; this._superApply( arguments ); diff --git a/js/widgets/listview.js b/js/widgets/listview.js index 850e4f0a13a..15f587d29cb 100644 --- a/js/widgets/listview.js +++ b/js/widgets/listview.js @@ -79,13 +79,15 @@ $.widget( "mobile.listview", $.extend( { return $( results ); }, + _beforeListviewRefresh: $.noop, + _afterListviewRefresh: $.noop, + refresh: function( create ) { var buttonClass, pos, numli, item, itemClass, itemTheme, itemIcon, icon, a, isDivider, startCount, newStartCount, value, last, splittheme, splitThemeClass, spliticon, - altButtonClass, dividerTheme, + altButtonClass, dividerTheme, li, o = this.options, $list = this.element, - li = this._getChildrenByTagName( $list[ 0 ], "li", "LI" ), ol = !!$.nodeName( $list[ 0 ], "ol" ), start = $list.attr( "start" ), itemClassDict = {}, @@ -103,6 +105,10 @@ $.widget( "mobile.listview", $.extend( { $list.css( "counter-reset", "listnumbering " + startCount ); } + this._beforeListviewRefresh(); + + li = this._getChildrenByTagName( $list[ 0 ], "li", "LI" ); + for ( pos = 0, numli = li.length; pos < numli; pos++ ) { item = li.eq( pos ); itemClass = ""; @@ -193,9 +199,9 @@ $.widget( "mobile.listview", $.extend( { this._addThumbClasses( li ); this._addThumbClasses( li.find( ".ui-btn" ) ); + this._afterListviewRefresh(); + this._addFirstLastClasses( li, this._getVisibles( li, create ), create ); - // autodividers binds to this to redraw dividers after the listview refresh - this._trigger( "afterrefresh" ); } }, $.mobile.behaviors.addFirstLastClasses ) );