this.attribute在构造之后没有定义
this.attribute is not defined after being constructed
嗨,我做了一个非常小的jquery插件:
$mandarina = {
mainCnt: $('#main'),
header: $('header.site-header'),
init: function () {
this.onScroll();
},
onScroll: function () {
$(window).scroll(function(e){
var scrollTop = $(window).scrollTop();
if(scrollTop > this.header.height()){
this.mainCnt.addClass('fixed-header');
}else{
this.mainCnt.removeClass('fixed-header');
}
});
}
}
$(function () {
$mandarina.init();
});
但当我滚动时,我在控制台中得到了这个错误:
TypeError: this.header is undefined
[Parar en este error]
if(scrollTop > this.header.height()){
知道为什么吗?
奇怪的是,init函数中的这个.header确实存在。。
在滚动回调中,this
是window
元素,而不是$mandarina
对象。您需要通过保存对$mandarina
的引用;
onScroll: function () {
var that = this;
$(window).scroll(function(e){
var scrollTop = $(window).scrollTop();
if(scrollTop > that.header.height()){
that.mainCnt.addClass('fixed-header');
}else{
that.mainCnt.removeClass('fixed-header');
}
});
}
即将this
的值存储在that
中并且在事件处理程序内使用that
而不是this
。
尝试这个
$mandarina = {
mainCnt: $('#main'),
header: $('header.site-header'),
init: function () {
this.onScroll();
},
onScroll: function () {
var $this= $(this);
$(window).scroll(function(e){
var scrollTop = $(window).scrollTop();
if(scrollTop > $this.header.height()){
$this.mainCnt.addClass('fixed-header');
}else{
$this.mainCnt.removeClass('fixed-header');
}
});
}
}
$(function () {
$mandarina.init();
});
this.header.height
您需要删除this
相关文章:
- 没有在Angular应用程序中定义firebase(在firebase迁移之后)
- Node.js错误“;ReferenceError:全局未定义“;在从0.10.2更新到0.12.2之后
- jqgridnavgrid在搜索按钮和自定义按钮之后添加按钮
- 从一个函数传递到另一个函数的变量在使用jQuery的.post之后变得未定义
- 如何在wooccommerce脚本之后添加自定义java脚本
- 在递归循环javascript之后,为JSON键变量使用自定义HTML元素
- $stateParams变为'未定义'在传递到控制器之后
- 在定义了构造函数之后,是否可以将实例属性添加到JavaScript原型中
- $digest不久之后$watch定义触发“$apply已经在进行中.“错误
- 为什么函数变量在变量之后是未定义的
- WooCommerce AJAX在我的自定义脚本之后重新加载页面
- 在函数之后找不到/未定义类名
- 清除间隔名称未在 JS while 循环之后定义
- 聚合物在我的自定义函数之后注册所有元素
- 一个数组在“array.push”一些字符串之后附加了未定义.这正常吗
- 在 setTimeout 中调用 document.write 之后,“函数未定义”
- 为什么在myvar = $(this)之后没有定义myvar
- 如果类是在具有元注释的组件之后定义的,则类是不可注入的
- 在返回表达式之后定义函数的使用场景或优点是什么
- javascript可以在调用者之后定义被调用者,以及如何解析它