@@ -919,46 +919,39 @@ the specific language governing permissions and limitations under the Apache Lic
919919
920920 populate = function ( results , container , depth ) {
921921
922- var i , l , result , selectable , disabled , compound , node , label , innerContainer , formatted , formattedClass ;
922+ var i , l , result , selectable , disabled , compound , node , label , innerContainer , formatted ;
923923
924924 results = opts . sortResults ( results , container , query ) ;
925925
926- // collect the created nodes for bulk append
927- var nodes = [ ] ;
928926 for ( i = 0 , l = results . length ; i < l ; i = i + 1 ) {
929927
930928 result = results [ i ] ;
929+
931930 disabled = ( result . disabled === true ) ;
932931 selectable = ( ! disabled ) && ( id ( result ) !== undefined ) ;
932+
933933 compound = result . children && result . children . length > 0 ;
934934
935- node = "<li class=\"" ;
936- node += "select2-results-dept-" + depth ;
937- node += " select2-result" ;
938- node += selectable ? " select2-result-selectable" : " select2-result-unselectable" ;
939- if ( disabled )
940- node += " select2-disabled" ;
941- if ( compound )
942- node += " select2-result-with-children" ;
943- formattedClass = self . opts . formatResultCssClass ( result ) ;
944- if ( formattedClass != undefined )
945- node += " " + formattedClass ;
946- node += "\" role=\"presentation\">" ;
947-
948- label = "<div class=\"select2-result-label\"" ;
949- label += " id=\"select2-result-label-" + nextUid ( ) + "\"" ;
950- label += " role=\"option\"" ;
951- label += ">" ;
952- formatted = opts . formatResult ( result , label , query , self . opts . escapeMarkup ) ;
953- if ( formatted !== undefined )
954- label += formatted ;
955- label += "</div>" ;
956-
957- node += label ;
958- node += "</li>" ;
959-
960- // I still used jQuery wrapping for setting "data" below
961- node = $ ( node ) ;
935+ node = $ ( "<li></li>" ) ;
936+ node . addClass ( "select2-results-dept-" + depth ) ;
937+ node . addClass ( "select2-result" ) ;
938+ node . addClass ( selectable ? "select2-result-selectable" : "select2-result-unselectable" ) ;
939+ if ( disabled ) { node . addClass ( "select2-disabled" ) ; }
940+ if ( compound ) { node . addClass ( "select2-result-with-children" ) ; }
941+ node . addClass ( self . opts . formatResultCssClass ( result ) ) ;
942+ node . attr ( "role" , "presentation" ) ;
943+
944+ label = $ ( document . createElement ( "div" ) ) ;
945+ label . addClass ( "select2-result-label" ) ;
946+ label . attr ( "id" , "select2-result-label-" + nextUid ( ) ) ;
947+ label . attr ( "role" , "option" ) ;
948+
949+ formatted = opts . formatResult ( result , label , query , self . opts . escapeMarkup ) ;
950+ if ( formatted !== undefined ) {
951+ label . html ( formatted ) ;
952+ node . append ( label ) ;
953+ }
954+
962955
963956 if ( compound ) {
964957
@@ -969,10 +962,9 @@ the specific language governing permissions and limitations under the Apache Lic
969962 }
970963
971964 node . data ( "select2-data" , result ) ;
972- nodes . push ( node [ 0 ] ) ;
965+ container . append ( node ) ;
973966 }
974- // bulk append the created nodes
975- container . append ( nodes ) ;
967+
976968 liveRegion . text ( opts . formatMatches ( results . length ) ) ;
977969 } ;
978970
0 commit comments