- commit
- ec3491e1b249af974c8c432155e3caabd554a114
- parent
- 54aed11b8bb21219652250d2eae7f443ca522d6a
- Author
- leaf corcoran <leafot@gmail.com>
- Date
- 2013-07-31 17:19
make parent_selector an option
Diffstat
| M | jquery.sticky-kit.coffee | 10 | ++++------ |
| M | jquery.sticky-kit.js | 12 | +++++++----- |
| M | jquery.sticky-kit.min.js | 8 | ++++---- |
3 files changed, 15 insertions, 15 deletions
diff --git a/jquery.sticky-kit.coffee b/jquery.sticky-kit.coffee
@@ -5,12 +5,9 @@ 5 5 $ = @jQuery 6 6 7 7 win = $ window8 -1 $.fn.stick_in_parent = (parent_selector, opts={}) ->9 -1 if $.isPlainObject parent_selector10 -1 opts = parent_selector11 -1 parent_selector = undefined12 -113 -1 { sticky_class, inner_scrolling } = opts-1 8 $.fn.stick_in_parent = (opts={}) -> -1 9 { sticky_class, inner_scrolling, parent: parent_selector } = opts -1 10 parent_selector ?= undefined 14 11 inner_scrolling ?= true 15 12 sticky_class ?= "is_stuck" 16 13 @@ -18,6 +15,7 @@ $.fn.stick_in_parent = (parent_selector, opts={}) -> 18 15 ((elm, padding_bottom, parent_top, parent_height, height) -> 19 16 parent = elm.parent() 20 17 parent = parent.closest(parent_selector) if parent_selector? -1 18 throw "failed to find stick parent" unless parent.length 21 19 22 20 recalc = -> 23 21 border_top = parseInt parent.css("border-top-width"), 10
diff --git a/jquery.sticky-kit.js b/jquery.sticky-kit.js
@@ -12,16 +12,15 @@ 12 12 13 13 win = $(window); 14 1415 -1 $.fn.stick_in_parent = function(parent_selector, opts) {16 -1 var elm, inner_scrolling, sticky_class, _fn, _i, _len;-1 15 $.fn.stick_in_parent = function(opts) { -1 16 var elm, inner_scrolling, parent_selector, sticky_class, _fn, _i, _len; 17 17 if (opts == null) { 18 18 opts = {}; 19 19 }20 -1 if ($.isPlainObject(parent_selector)) {21 -1 opts = parent_selector;-1 20 sticky_class = opts.sticky_class, inner_scrolling = opts.inner_scrolling, parent_selector = opts.parent; -1 21 if (parent_selector == null) { 22 22 parent_selector = void 0; 23 23 }24 -1 sticky_class = opts.sticky_class, inner_scrolling = opts.inner_scrolling;25 24 if (inner_scrolling == null) { 26 25 inner_scrolling = true; 27 26 } @@ -34,6 +33,9 @@ 34 33 if (parent_selector != null) { 35 34 parent = parent.closest(parent_selector); 36 35 } -1 36 if (!parent.length) { -1 37 throw "failed to find stick parent"; -1 38 } 37 39 recalc = function() { 38 40 var border_top, padding_top; 39 41 border_top = parseInt(parent.css("border-top-width"), 10);
diff --git a/jquery.sticky-kit.min.js b/jquery.sticky-kit.min.js
@@ -1,7 +1,7 @@ 1 1 /* 2 2 WTFPL | Leaf Corcoran 2013 | http://leafo.net 3 3 */4 -1 (function(){var a,t;a=this.jQuery;t=a(window);a.fn.stick_in_parent=function(f,g){var z,u,n,A,e,B;null==g&&(g={});a.isPlainObject(f)&&(g=f,f=void 0);n=g.sticky_class;u=g.inner_scrolling;null==u&&(u=!0);null==n&&(n="is_stuck");A=function(b,g,p,e,h){var m,q,k,v,c,d,w,x,r,y;d=b.parent();null!=f&&(d=d.closest(f));w=function(){var c,a;c=parseInt(d.css("border-top-width"),10);a=parseInt(d.css("padding-top"),10);g=parseInt(d.css("padding-bottom"),10);p=d.offset().top+c+a;e=d.height();return h=b.outerHeight(!0)};5 -1 w();if(h!==e)return k=b.css("float"),r=a("<div />").css({width:b.outerWidth(!0),height:h,display:b.css("display"),"float":k}),m=q=!1,v=void 0,c=0,x=!1,y=function(){var a,f,l,s;l=t.scrollTop();null!=v&&(f=l-v);v=l;q?(s=l+h+c>e+p,m&&!s&&(m=!1,b.css({position:"fixed",bottom:"",top:0}).trigger("sticky_kit:unbottom")),l<p&&(q=!1,c=0,"left"!==k&&"right"!==k||b.insertAfter(r),r.detach(),a={position:""},x&&(a.width=""),b.css(a).removeClass(n).trigger("sticky_kit:unstick")),u&&(a=t.height(),h>a&&!m&&(c-=f,6 -1 c=Math.max(a-h,c),c=Math.min(0,c),b.css({top:c+"px"})))):l>p&&(q=!0,a={position:"fixed",top:c},"none"===k&&"block"===b.css("display")&&(a.width=b.width()+"px",x=!0),b.css(a).addClass(n).after(r),"left"!==k&&"right"!==k||r.append(b),b.trigger("sticky_kit:stick"));if(q&&(null==s&&(s=l+h+c>e+p),!m&&s))return m=!0,"static"===d.css("position")&&d.css({position:"relative"}),b.css({position:"absolute",bottom:g,top:""}).trigger("sticky_kit:bottom")},t.on("scroll",y),a(document.body).on("sticky_kit:recalc",7 -1 function(){w();return y()})};e=0;for(B=this.length;e<B;e++)z=this[e],A(a(z));return this}}).call(this);-1 4 (function(){var g,t;g=this.jQuery;t=g(window);g.fn.stick_in_parent=function(e){var u,c,p,z,h,A;null==e&&(e={});p=e.sticky_class;u=e.inner_scrolling;c=e.parent;null==c&&(c=void 0);null==u&&(u=!0);null==p&&(p="is_stuck");z=function(a,e,q,h,l){var n,r,f,v,b,d,w,x,s,y;d=a.parent();null!=c&&(d=d.closest(c));if(!d.length)throw"failed to find stick parent";w=function(){var b,f;b=parseInt(d.css("border-top-width"),10);f=parseInt(d.css("padding-top"),10);e=parseInt(d.css("padding-bottom"),10);q=d.offset().top+ -1 5 b+f;h=d.height();return l=a.outerHeight(!0)};w();if(l!==h)return f=a.css("float"),s=g("<div />").css({width:a.outerWidth(!0),height:l,display:a.css("display"),"float":f}),n=r=!1,v=void 0,b=0,x=!1,y=function(){var k,g,m,c;m=t.scrollTop();null!=v&&(g=m-v);v=m;r?(c=m+l+b>h+q,n&&!c&&(n=!1,a.css({position:"fixed",bottom:"",top:0}).trigger("sticky_kit:unbottom")),m<q&&(r=!1,b=0,"left"!==f&&"right"!==f||a.insertAfter(s),s.detach(),k={position:""},x&&(k.width=""),a.css(k).removeClass(p).trigger("sticky_kit:unstick")), -1 6 u&&(k=t.height(),l>k&&!n&&(b-=g,b=Math.max(k-l,b),b=Math.min(0,b),a.css({top:b+"px"})))):m>q&&(r=!0,k={position:"fixed",top:b},"none"===f&&"block"===a.css("display")&&(k.width=a.width()+"px",x=!0),a.css(k).addClass(p).after(s),"left"!==f&&"right"!==f||s.append(a),a.trigger("sticky_kit:stick"));if(r&&(null==c&&(c=m+l+b>h+q),!n&&c))return n=!0,"static"===d.css("position")&&d.css({position:"relative"}),a.css({position:"absolute",bottom:e,top:""}).trigger("sticky_kit:bottom")},t.on("scroll",y),g(document.body).on("sticky_kit:recalc", -1 7 function(){w();return y()})};h=0;for(A=this.length;h<A;h++)e=this[h],z(g(e));return this}}).call(this);