javascript window.addEventListener, 覆盖第一个元素的配置
javascript window.addEventListener, overwritten the config of first element
抱歉,我真的不知道如何修复这段代码,甚至不知道如何搜索修复。
问题是当我用自己的配置值重新声明函数时,它会覆盖第一次声明的配置。请提供任何帮助,这对我有很大帮助,请提前致谢。
请随意编辑我的post,实在是我不知道怎么办。
var FX = (function(FX, $) {
window.addEventListener('scroll', function(){
FX.scrollTop.init({
obj: $(".header--fixed"),
from: 150
});
FX.scrollTop.init({
obj: $(".sticky-left-nav"),
from: 1600
});
});
/*----------------
Scroll
----------------- */
FX.scrollTop = {
config: {
obj: '',
from: 150,
activeClass: 'scrolled'
},
init: function(config) {
$.extend(this.config, config);
var scrolledFromtop = $(window).scrollTop();
//console.log(this.config.obj+'=>'+this.config.from);
if(scrolledFromtop > this.config.from){
config.obj.addClass('fixed');
setTimeout(function(){
var config = FX.scrollTop.config;
config.obj.addClass(config.activeClass);
}, 90);
}else{
var config = FX.scrollTop.config;
config.obj.removeClass(config.activeClass);
setTimeout(function(){
var config = FX.scrollTop.config;
config.obj.removeClass('fixed');
}, 90);
}
}
}
return FX;
}(FX || {}, jQuery));
您没有重新声明 init 它被连续调用了两次,并且每次调用 init 时您的原始配置对象都会被覆盖。
您可以将初始化所需的所有变量分配给局部变量,并检查它们何时没有传递回您最初定义的配置:
init: function(config) {
var originalConfig = FX.scrollTop.config;
var obj = config.obj ? config.obj : originalConfig.obj;
var from = config.from ? config.from : originalConfig.from;
var activeClass = config.activeClass ? config.activeClass : originalConfig.activeClass;
var scrolledFromtop = $(window).scrollTop();
//console.log(this.config.obj+'=>'+this.config.from);
if(scrolledFromtop > from){
obj.addClass('fixed');
setTimeout(function(){
obj.addClass(activeClass);
}, 90);
}else{
obj.removeClass(activeClass);
setTimeout(function(){
obj.removeClass('fixed');
}, 90);
}
}
抱歉,我真的不知道如何修复这段代码,甚至不知道如何搜索修复。
问题是当我用自己的配置值重新声明函数时,它会覆盖第一次声明的配置。请提供任何帮助,这对我有很大帮助,请提前致谢。
请随意编辑我的post,实在是我不知道怎么办。
var FX = (function(FX, $) {
window.addEventListener('scroll', function(){
FX.scrollTop.init({
obj: $(".header--fixed"),
from: 150
});
FX.scrollTop.init({
obj: $(".sticky-left-nav"),
from: 1600
});
});
/*----------------
Scroll
----------------- */
FX.scrollTop = {
config: {
obj: '',
from: 150,
activeClass: 'scrolled'
},
init: function(config) {
$.extend(this.config, config);
var scrolledFromtop = $(window).scrollTop();
//console.log(this.config.obj+'=>'+this.config.from);
if(scrolledFromtop > this.config.from){
config.obj.addClass('fixed');
setTimeout(function(){
var config = FX.scrollTop.config;
config.obj.addClass(config.activeClass);
}, 90);
}else{
var config = FX.scrollTop.config;
config.obj.removeClass(config.activeClass);
setTimeout(function(){
var config = FX.scrollTop.config;
config.obj.removeClass('fixed');
}, 90);
}
}
}
return FX;
}(FX || {}, jQuery));
您没有重新声明 init 它被连续调用了两次,并且每次调用 init 时您的原始配置对象都会被覆盖。
您可以将初始化所需的所有变量分配给局部变量,并检查它们何时没有传递回您最初定义的配置:
init: function(config) {
var originalConfig = FX.scrollTop.config;
var obj = config.obj ? config.obj : originalConfig.obj;
var from = config.from ? config.from : originalConfig.from;
var activeClass = config.activeClass ? config.activeClass : originalConfig.activeClass;
var scrolledFromtop = $(window).scrollTop();
//console.log(this.config.obj+'=>'+this.config.from);
if(scrolledFromtop > from){
obj.addClass('fixed');
setTimeout(function(){
obj.addClass(activeClass);
}, 90);
}else{
obj.removeClass(activeClass);
setTimeout(function(){
obj.removeClass('fixed');
}, 90);
}
}