访问对象文字函数内的Jquery对象变量

时间:2014-02-26 00:11:15

标签: javascript jquery scope object-literal

我无法理解为什么我不能检查存储在变量中的jquery对象的.change()方法。这是语法错误吗?我是否失去了背景?

这是我的代码:

var MyObj = {

    //declaration
    reference : $('#reference'),
    observeReference : function() {

        //The following line is not tracking the .change() method. 
        //Not sure why... And I didn't any get console error!
        this.reference.change(function() {
            var opt = $('#reference option:selected').text();

            if (opt === 'other' || opt === 'reference') {
                $('#input_other').fadeIn();
            } else{
                $('#input_other').fadeOut();
                $('#input_other_bx').val('');
            };
        }.bind(this));      
    },
    init: function() {
        this.observeReference();
    }
};

$(document).ready(function() {
     MyObj.init();
});

1 个答案:

答案 0 :(得分:2)

如果$('#reference')在文档就绪之前执行,它将获得一个jquery对象length = 0

init方法将在文档就绪后执行,因此在init方法中指定引用。

var MyObj = {

//declaration
reference : null,
...

init: function() {
    this.reference = $('#reference');
    this.observeReference();
}