Skip to content

Commit

Permalink
More control with callbacks for behaviors
Browse files Browse the repository at this point in the history
+ You can now extend callbacks without having to basically replicate the entire '_loadcallback' function
+ Added cufon behavior
+ Modified manual-trigger behavior
+ Updated Masonry behavior
  • Loading branch information
lukeshumard committed Jun 29, 2011
1 parent 642a069 commit 76a5d98
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 77 deletions.
2 changes: 2 additions & 0 deletions .gitignore
@@ -0,0 +1,2 @@

infinte-scroll.tmproj
21 changes: 21 additions & 0 deletions behaviors/cufon.js
@@ -0,0 +1,21 @@
/*
--------------------------------
Infinite Scroll Behavior
Cufon Refresh
--------------------------------
+ https://github.com/paulirish/infinitescroll/
+ version 2.0b2.110617
+ Copyright 2011 Paul Irish & Luke Shumard
+ Licensed under the MIT license
+ Documentation: http://infinite-scroll.com/
*/

$.extend($.infinitescroll.prototype,{

_callback_cufon: function infscr_callback_cufon(newElements) {
Cufon.refresh(newElements);
}

});
9 changes: 9 additions & 0 deletions behaviors/manual-trigger.js
Expand Up @@ -25,6 +25,15 @@ $.extend($.infinitescroll.prototype,{
instance.retrieve();
}
});

// Define loadingStart to never hide pager
instance.options.loadingStart = function (opts) {
opts.loadingMsg
.appendTo(opts.loadMsgSelector)
.show(opts.loadingMsgRevealSpeed, function () {
beginAjax(opts);
});
}
}

});
68 changes: 2 additions & 66 deletions behaviors/masonry-isotope.js
Expand Up @@ -14,72 +14,8 @@

$.extend($.infinitescroll.prototype,{

_setup_masonry: function infscr_setup_masonry () {

var opts = this.options,
instance = this;

this._binding('bind');

},

_loadcallback_masonry: function infscr_loadcallback_masonry (box,data) {

var opts = this.options,
callback = this.options.callback,
result = (opts.isDone) ? 'done' : 'append',
frag;

switch (result) {

case 'done':

this._showdonemsg();
return false;

break;

case 'append':

var children = box.children();

// if it didn't return anything
if (children.length == 0) {
return this._error('end');
}


// use a documentFragment because it works when content is going into a table or UL
frag = document.createDocumentFragment();
while (box[0].firstChild) {
frag.appendChild(box[0].firstChild);
}

this._debug('contentSelector', $(opts.contentSelector)[0])

// instead of the standard append, we use masonry's appended method
$(opts.contentSelector)[0].masonry('appended',frag);

data = children.get();


break;

}

// loadingEnd function
opts.loadingEnd.call($(opts.contentSelector)[0],opts)


// smooth scroll to ease in the new content
if (opts.animate) {
var scrollTo = $(window).scrollTop() + $('#infscr-loading').height() + opts.extraScrollPx + 'px';
$('html,body').animate({ scrollTop: scrollTo }, 800, function () { opts.isDuringAjax = false; });
}

if (!opts.animate) opts.isDuringAjax = false; // once the call is done, we can allow it again.

callback.call($(opts.contentSelector)[0], data);
_callback_masonry: function infscr_callback_masonry (newElements) {
$(this).masonry('appended',$(newElements));
}

});
11 changes: 9 additions & 2 deletions jquery.infinitescroll.js
Expand Up @@ -151,7 +151,14 @@
};

// callback loading
opts.callback = opts.callback || callback || function () { };
opts.callback = function(instance,data) {
if (!!opts.behavior && instance['_callback_'+opts.behavior] !== undefined) {
instance['_callback_'+opts.behavior].call($(opts.contentSelector)[0], data);
}
if (callback) {
callback.call($(opts.contentSelector)[0], data);
}
};

this._setup();

Expand Down Expand Up @@ -317,7 +324,7 @@

if (!opts.animate) opts.isDuringAjax = false; // once the call is done, we can allow it again.

callback.call($(opts.contentSelector)[0], data);
callback(this,data);

},

Expand Down
9 changes: 0 additions & 9 deletions test/index.html
Expand Up @@ -83,15 +83,6 @@ <h1>Infinite Scroll Testing</h1>
dataType : 'html',
// behavior : 'twitter',
// loadMore : '#next',
/*
loadingStart : function (opts) {
opts.loadingMsg
.appendTo(opts.loadMsgSelector)
.show(opts.loadingMsgRevealSpeed, function () {
beginAjax(opts);
});
}
*/
// appendCallback : false, // USE FOR PREPENDING
// pathParse : function( pathStr, nextPage ){ return pathStr.replace('2', nextPage ); }
}, function(newElements){
Expand Down

0 comments on commit 76a5d98

Please sign in to comment.