我不知道如何将变量从init函数传递到我的对象中的bindEvent函数:目前,我还没有定义。
var Fisheye = {
init: function () {
$('body').hide();
$(window).load(function() {
$('body').fadeIn('slow');
this.imgs = $('.pic').children('img');
this.originalWidth = $(imgs).first().css('width');
this.minWidth = 300;
imgs.width(300);
Fisheye.bindEvents();
});
},
bindEvents: function() {
$(this.imgs).toggle(this.toggleClick, this.toggleClick);
console.log(this.imgs); // Why do I get Undefined here?
},
toggleClick: function() {
//Todo
}
}
Fisheye.init();如何正确地将变量从一个函数传递到对象中的另一个函数?
谢谢!
发布于 2012-06-02 17:59:53
您可以这样做:
var Fisheye = {
init: function () {
var _this = this;
$('body').hide();
$(window).load(function() {
$('body').fadeIn('slow');
_this.imgs = $('.pic').children('img');
_this.originalWidth = $(_this.imgs).first().css('width');
_this.minWidth = 300;
_this.imgs.width(300);
_this.bindEvents();
});
},
bindEvents: function() {
$(this.imgs).toggle(this.toggleClick, this.toggleClick);
},
toggleClick: function() {
//Todo
}
}
Fisheye.init();问题是你处理程序中的"this“不是Fisheye的实例,而是窗口。
但是使用toggleClick也会遇到类似的问题。对这些人的一个解决方案可能是这样做:
bindEvents: function() {
var _this = this;
var toggleFunction = function(){_this.toggleClick()};
$(this.imgs).toggle(toggleFunction, toggleFunction);
},发布于 2012-06-02 18:13:38
快速调整结构,将参数添加到函数
bindEvents: function(imgs) {
$(imgs).toggle(this.toggleClick, this.toggleClick);
console.log(imgs); // Why do I get Undefined here?
},...关于init函数
...
var imgs = ..
Fisheye.bindEvents(imgs);https://stackoverflow.com/questions/10861368
复制相似问题