我以前从来不需要“绑定”或“取消绑定”任何东西,所以我很困惑,因为我找不到与我想做的事情直接相关的例子。
当您到达此处页面的某个点时,有一个插件可以滚动 div - 您都见过这种事情,对吧?
但我只希望插件在窗口达到一定宽度时触发,然后如果窗口再次低于该宽度,则“取消触发”/取消绑定,例如......
(顺便说一下,#contact-form 是我正在滚动的容器,你猜对了,它包含一个联系表单)
function contactForm() {
windowWidth = $(window).width();
if (windowWidth >= 1024) {
jQuery('#contact-form').containedStickyScroll();
} else {
jQuery('#contact-form').unbind(); // I don't want the plugin to fire
}
};
// Standard stuff...
$(document).ready(function() {
contactForm();
});
$(window).resize(function() {
contactForm();
});
这个包含的粘性滚动功能如下所示:
$.fn.containedStickyScroll = function( options ) {
var defaults = {
oSelector : this.selector,
unstick : true,
easing: 'linear',
duration: 500,
queue: false,
closeChar: '^',
closeTop: 0,
closeRight: 0
}
var options = $.extend(defaults, options);
if(options.unstick == true){
this.css('position','relative');
this.append('<a class="scrollFixIt">' + options.closeChar + '</a>');
jQuery(options.oSelector + ' .scrollFixIt').css('position','absolute');
jQuery(options.oSelector + ' .scrollFixIt').css('top',options.closeTop + 'px');
jQuery(options.oSelector + ' .scrollFixIt').css('right',options.closeTop + 'px');
jQuery(options.oSelector + ' .scrollFixIt').css('cursor','pointer');
jQuery(options.oSelector + ' .scrollFixIt').click(function() {
getObject = options.oSelector;
jQuery(getObject).animate({ top: "0px" },
{ queue: options.queue, easing: options.easing, duration: options.duration });
jQuery(window).unbind();
jQuery('.scrollFixIt').remove();
});
}
jQuery(window).scroll(function() {
getObject = options.oSelector;
if(jQuery(window).scrollTop() > (jQuery(getObject).parent().offset().top) &&
(jQuery(getObject).parent().height() + jQuery(getObject).parent().position().top - 30) > (jQuery(window).scrollTop() + jQuery(getObject).height())){
jQuery(getObject).animate({ top: (jQuery(window).scrollTop() - jQuery(getObject).parent().offset().top) + "px" },
{ queue: options.queue, easing: options.easing, duration: options.duration });
}
else if(jQuery(window).scrollTop() < (jQuery(getObject).parent().offset().top)){
jQuery(getObject).animate({ top: "0px" },
{ queue: options.queue, easing: options.easing, duration: options.duration });
}
});
};