フローティング要素がページの最後にある場合 (したがって、デフォルトやオプションはありません) に可能な限り最小の jquery プラグインを作成しようとしましたが、次は 1 つの「スティッキー」要素に対しては正常に動作しますが、動作させるには問題があります。複数の要素。this.eachを返す必要があることはわかっていますが、最善の方法を見つけることはできません。確かに、各ループでサイズ変更とスクロールは必要ありませんか?
以下のコード:
(function ( $, undefined ) {
$.fn.sticky = function() {
var self = this,
isStickyWidth = self.data('sticky'),
isStickyActive = false,
windowHeight,
elOffset = self.offset().top,
elHeight;
$(document).on("scroll", function(){
if(isStickyActive && windowHeight > elHeight) {
var scrollPos = $('body').scrollTop();
if(scrollPos > elOffset) {
self.css({'position':'fixed','top':'0px'});
} else {
self.css({'position':'relative'});
}
}
});
$(window).on("resize", function(){
windowHeight = $(window).height();
elHeight = self.height();
self.width(self.parent().width());
if(isStickyWidth < $(window).width() ) {
isStickyActive = true;
} else {
isStickyActive = false;
}
}).resize();
return this; //need to return each in this example if binding to multiple DOM elements
};
}( jQuery ));