首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义的变量jQuery对象

未定义的变量jQuery对象
EN

Stack Overflow用户
提问于 2012-06-02 17:54:58
回答 2查看 665关注 0票数 0

我不知道如何将变量从init函数传递到我的对象中的bindEvent函数:目前,我还没有定义。

代码语言:javascript
复制
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();

如何正确地将变量从一个函数传递到对象中的另一个函数?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-02 17:59:53

您可以这样做:

代码语言:javascript
复制
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也会遇到类似的问题。对这些人的一个解决方案可能是这样做:

代码语言:javascript
复制
bindEvents: function() {
    var _this = this;
    var toggleFunction = function(){_this.toggleClick()};
    $(this.imgs).toggle(toggleFunction, toggleFunction);
},
票数 1
EN

Stack Overflow用户

发布于 2012-06-02 18:13:38

快速调整结构,将参数添加到函数

代码语言:javascript
复制
 bindEvents: function(imgs) {
    $(imgs).toggle(this.toggleClick, this.toggleClick);
    console.log(imgs); // Why do I get Undefined here?
},...

关于init函数

代码语言:javascript
复制
...
var imgs = ..
Fisheye.bindEvents(imgs);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10861368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档