Added `remove` method and fixed `destroy` removing resize listener for all instances of shuffle

pull/56/head
Glen Cheney 11 years ago
parent f6a3395fb5
commit 5122c35d85

@ -53,6 +53,14 @@
return 0;
}
if ( valA === 'sortFirst' || valB === 'sortLast' ) {
return -1;
}
if ( valA === 'sortLast' || valB === 'sortFirst' ) {
return 1;
}
return (valA < valB) ? -1 :
(valA > valB) ? 1 : 0;
});
@ -151,7 +159,7 @@
// Get debounced versions of our resize methods
afterResizeFunc = $.proxy( self._afterResize, self );
debouncedAfterResize = self.throttle ? self.throttle( self.throttleTime, afterResizeFunc ) : afterResizeFunc;
self.$window.on('resize.shuffle', debouncedAfterResize);
self.$window.on('resize.' + self.unique, debouncedAfterResize);
// If we need to hide layouts with a fade instead, we need another event on window resize
// which is only fired the first time window resize is triggered
@ -553,10 +561,11 @@
/**
* Hides the elements that don't match our filter
*/
shrink : function() {
shrink : function( $collection, fn ) {
var self = this,
$concealed = self.$items.filter('.concealed'),
transitionObj = {};
$concealed = $collection || self.$items.filter('.concealed'),
transitionObj = {},
callback = fn || self.shrinkEnd;
// Abort if no items
if ($concealed.length === 0) {
@ -582,7 +591,7 @@
y: y,
scale : 0.001,
opacity: 0,
callback: self.shrinkEnd
callback: callback
};
self.styleQueue.push( transitionObj );
@ -965,12 +974,39 @@
}
},
remove : function( $collection ) {
// If this isn't a jquery object, exit
if ( !$collection.length || !$collection.jquery ) {
return;
}
var self = this,
remove = function() {
var shuffle = this;
$collection.remove();
$collection = null;
setTimeout(function() {
shuffle.$items = shuffle._getItems();
shuffle.layout();
}, 0);
};
self.shrink( $collection, remove );
self._processStyleQueue();
},
destroy: function() {
var self = this;
self.$container.removeAttr('style').removeData('shuffle');
self.$window.off('.shuffle');
self.$items.removeAttr('style').removeClass('concealed filtered shuffle-item');
self.$window.off('.' + self.unique);
self.$container
.removeClass('shuffle')
.removeAttr('style')
.removeData('shuffle');
self.$items
.removeAttr('style')
.removeClass('concealed filtered shuffle-item');
self.destroyed = true;
}
@ -1006,6 +1042,7 @@
case 'enable':
case 'disable':
case 'layout':
case 'remove':
shuffle[ opts ].apply( shuffle, args );
break;
default:

Loading…
Cancel
Save