@@ -6,8 +6,7 @@ define( [ "jquery", "./listview" ], function( jQuery ) {
66//>>excludeEnd("jqmBuildExclude");
77( function ( $ , undefined ) {
88
9- $ . mobile . listview . prototype . options . autodividers = false ;
10- $ . mobile . listview . prototype . options . autodividersSelector = function ( elt ) {
9+ function defaultAutodividersSelector ( elt ) {
1110 // look for the text in the given element
1211 var text = $ . trim ( elt . text ( ) ) || null ;
1312
@@ -19,26 +18,34 @@ $.mobile.listview.prototype.options.autodividersSelector = function( elt ) {
1918 text = text . slice ( 0 , 1 ) . toUpperCase ( ) ;
2019
2120 return text ;
22- } ;
21+ }
2322
24- $ . mobile . document . delegate ( "ul,ol" , "listviewcreate" , function ( ) {
23+ $ . widget ( "mobile.listview" , $ . mobile . listview , {
24+ options : {
25+ autodividers : false ,
26+ autodividersSelector : defaultAutodividersSelector
27+ } ,
2528
26- var list = $ ( this ) ,
27- listview = list . data ( "mobile-listview" ) ;
29+ _afterListviewRefresh : function ( ) {
30+ var el = this . element ;
31+ this . _off ( el , "listviewafterrefresh" ) ;
32+ this . _replaceDividers ( ) ;
33+ this . refresh ( ) ;
34+ this . _on ( el , { listviewafterrefresh : "_afterListviewRefresh" } ) ;
35+ } ,
2836
29- if ( ! listview || ! listview . options . autodividers ) {
30- return ;
31- }
37+ _replaceDividers : function ( ) {
38+ var i , lis , li , dividerText ,
39+ lastDividerText = null ,
40+ list = this . element ;
3241
33- var replaceDividers = function ( ) {
3442 list . find ( "li:jqmData(role='list-divider')" ) . remove ( ) ;
3543
36- var lis = list . find ( 'li' ) ,
37- lastDividerText = null , li , dividerText ;
44+ lis = list . find ( 'li' ) ;
3845
39- for ( var i = 0 ; i < lis . length ; i ++ ) {
40- li = lis [ i ] ;
41- dividerText = listview . options . autodividersSelector ( $ ( li ) ) ;
46+ for ( i = 0 ; i < lis . length ; i ++ ) {
47+ li = lis [ i ] ;
48+ dividerText = this . options . autodividersSelector ( $ ( li ) ) ;
4249
4350 if ( dividerText && lastDividerText !== dividerText ) {
4451 var divider = document . createElement ( 'li' ) ;
@@ -49,16 +56,17 @@ $.mobile.document.delegate( "ul,ol", "listviewcreate", function() {
4956
5057 lastDividerText = dividerText ;
5158 }
52- } ;
59+ } ,
60+
61+ _create : function ( ) {
62+ this . _super ( ) ;
5363
54- var afterListviewRefresh = function ( ) {
55- list . unbind ( 'listviewafterrefresh' , afterListviewRefresh ) ;
56- replaceDividers ( ) ;
57- listview . refresh ( ) ;
58- list . bind ( 'listviewafterrefresh' , afterListviewRefresh ) ;
59- } ;
64+ if ( ! this . options . autodividers ) {
65+ return ;
66+ }
6067
61- afterListviewRefresh ( ) ;
68+ this . _afterListviewRefresh ( ) ;
69+ }
6270} ) ;
6371
6472} ) ( jQuery ) ;
0 commit comments