From a2ef6b025553355b937788606a412466e58e1ba3 Mon Sep 17 00:00:00 2001 From: Gabriel Schulhof Date: Sat, 8 Mar 2014 03:44:03 +0200 Subject: [PATCH 1/2] Listview: Do not compute .first() if there is only one anchor --- js/widgets/listview.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/widgets/listview.js b/js/widgets/listview.js index 3b36f027850..d7c89872e02 100644 --- a/js/widgets/listview.js +++ b/js/widgets/listview.js @@ -145,11 +145,15 @@ $.widget( "mobile.listview", $.extend( { .attr( "title", $.trim( last.getEncodedText() ) ) .addClass( altButtonClass ) .empty(); + + // Reduce to the first anchor, because only the first gets the buttonClass + a = a.first(); } else if ( icon ) { buttonClass += " ui-btn-icon-right ui-icon-" + icon; } - a.first().addClass( buttonClass ); + // Apply buttonClass to the (first) anchor + a.addClass( buttonClass ); } else if ( isDivider ) { dividerTheme = ( getAttr( item[ 0 ], "theme" ) || o.dividerTheme || o.theme ); From 5b9cc9f55d7709f923401bf831350df08ea3e2d6 Mon Sep 17 00:00:00 2001 From: Gabriel Schulhof Date: Sat, 8 Mar 2014 03:46:35 +0200 Subject: [PATCH 2/2] addFirstLastClasses: .not( ".ui-screen-hidden" ) -> custom function http://jsperf.com/dot-not-vs-loop Fixes gh-7227 --- js/widgets/addFirstLastClasses.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/js/widgets/addFirstLastClasses.js b/js/widgets/addFirstLastClasses.js index bf08829db28..ff5ff1caa6c 100644 --- a/js/widgets/addFirstLastClasses.js +++ b/js/widgets/addFirstLastClasses.js @@ -7,16 +7,31 @@ define( [ "jquery", "../core" ], function( jQuery ) { //>>excludeEnd("jqmBuildExclude"); (function( $, undefined ) { +var uiScreenHiddenRegex = /\bui-screen-hidden\b/; +function noHiddenClass( elements ) { + var index, + length = elements.length, + result = []; + + for ( index = 0; index < length; index++ ) { + if ( !elements[ index ].className.match( uiScreenHiddenRegex ) ) { + result.push( elements[ index ] ); + } + } + + return $( result ); +} + $.mobile.behaviors.addFirstLastClasses = { _getVisibles: function( $els, create ) { var visibles; if ( create ) { - visibles = $els.not( ".ui-screen-hidden" ); + visibles = noHiddenClass( $els ); } else { visibles = $els.filter( ":visible" ); if ( visibles.length === 0 ) { - visibles = $els.not( ".ui-screen-hidden" ); + visibles = noHiddenClass( $els ); } }