Permalink
Browse files

Merge pull request #63 from amire80/bug_43568

Render every region only once
  • Loading branch information...
2 parents 0e61876 + 13473c9 commit ca18edd0ddc01fdcf706d6f8981663f4b52430fd @santhoshtr santhoshtr committed Jan 7, 2013
Showing with 16 additions and 14 deletions.
  1. +4 −3 src/jquery.uls.lcd.js
  2. +12 −11 src/jquery.uls.regionfilter.js
View
@@ -272,7 +272,8 @@
// The region section need to be in sync with the map filter.
lcd.$element.scroll( function () {
- var $ulsLanguageList = $( this ),
+ var inview, inviewRegion,
+ $ulsLanguageList = $( this ),
scrollTop = $ulsLanguageList.position().top,
scrollBottom = $ulsLanguageList.height();
@@ -282,7 +283,7 @@
}
}
// The region section need to be in sync with the map filter.
- var inviewRegion = 'WW';
+ inviewRegion = 'WW';
lcd.$element.find( 'div.uls-lcd-region-section' ).each( function () {
var $lcdRegionSection = $( this ),
top = $lcdRegionSection.position().top,
@@ -296,7 +297,7 @@
}
} );
- var inview = $.uls.data.regiongroups[inviewRegion];
+ inview = $.uls.data.regiongroups[inviewRegion];
$( '.regionselector' ).removeClass( 'active' );
$( '#uls-region-' + inview ).addClass( 'active' );
} );
@@ -110,21 +110,22 @@
},
next: function () {
- if ( !this.$element.hasClass( 'active') ) {
+ var regionSelector = this;
+
+ if ( !this.$element.hasClass( 'active' ) ) {
return true;
}
- var regionSelector = this;
// Do not respond to all scroll end events, but only after a short interval
delay( function () {
- var regiongroup = regionSelector.$element.data( 'regiongroup' );
- var nextRegiongroup = regiongroup + 1;
-
- var $nextRegion = $( '#uls-region-' + nextRegiongroup );
- var next = $nextRegion.length && $nextRegion.data( 'regionselector' );
-
- if ( next ) {
- next.show();
+ var nextRegionGroupNumber = regionSelector.$element.data( 'regiongroup' ) + 1,
+ $nextRegion = $( '#uls-region-' + nextRegionGroupNumber ),
+ nextRegionSelector = $nextRegion.length && $nextRegion.data( 'regionselector' );
+
+ // If cache is defined, then it is already rendered and there's no need
+ // to re-render it.
+ if ( nextRegionSelector && nextRegionSelector.cache === null ) {
+ nextRegionSelector.show();
}
}, 100 );
@@ -133,7 +134,7 @@
listen: function () {
this.$element.on( 'click', $.proxy( this.click, this ) );
- this.options.$target.$element.bind( 'scrollend', $.proxy( this.next, this) );
+ this.options.$target.$element.bind( 'scrollend', $.proxy( this.next, this ) );
},
click: function ( e ) {

0 comments on commit ca18edd

Please sign in to comment.