2010-08-21 53 views
1

我試圖調用一個模糊函數分配給一個jQuery對象(輸入字段)的變量。如何在變量上調用函數?Javascript中的對象表示法

var someObject = { 
    day: $('#dayInputField'), // input text field 

    init:function(){ 
     console.log("this.day" + this.day); // outputs object 
     this.validateField(); 

    }, 
    validateField : function(){ 

     //this gets triggered - but I need to reference the variable 
     $('#dayInputField').blur(function(){ 
     console.log("This gets triggered"); 
     }; 

     // this doesn't get triggered - how do I target the variable? 

     this.day.blur(function(){ 
     console.log("doesn't work"); 
     }); 



    } 
} 

我也曾嘗試 -

$(this.day).blur 
$(this).day.blur 
someObject.day.blur 
$(day, this).blur 

任何幫助,將不勝感激! 感謝

+0

是您的代碼上或DOM後運行準備好了? – 2010-08-21 12:09:28

+0

這是外面 - 感謝尼克的幫助。 – Matt 2010-08-21 12:24:35

回答

1

UPDATE:

我以前的答案是不正確的,因爲你可以使用this從一個成員函數的對象的訪問屬性。我所描述的情況是不同的。例如:你不能這樣做,例如:

var someObject = { 
    day: 'some value', 
    day2: day 
}; 

但你的很好。事實上,正如您在下面的評論中指出的,問題原來是someObject.init()是從document.ready()之外調用的。


以前的答案:

是的,你不能初始化對象之前引用一個對象的屬性。 你可能要考慮使用 Module Pattern(又名雅虎模塊模式)作爲一種解決方案:

var someObject = (function() { 
    var day = $('#dayInputField'); 

    return { 
     init: function() { 
     console.log("this.day" + this.day); // outputs object 
     this.validateField(); 
     }, 

     validateField: function() {  

     //this gets triggered - but I need to reference the variable 
     $('#dayInputField').blur(function(){ 
      console.log("This gets triggered"); 
     }; 

     // now this doesn get triggered 
     day.blur(function(){ 
      console.log("it works"); 
     }); 
     } 
    }; 
})(); 

// Use someObject as you were doing before: 
someObject.init(); 
someObject.validateField(); 

堆棧溢出:How can a Javascript object refer to values in itself?

+0

令人難以置信。它在文檔之外 - 我正在從document.ready中調用someObject.init()方法。 只需將文檔包含在文檔中即可,並且完美地工作。 感謝您的及時響應 - 只需要在正確的方向戳 - 並嘗試模塊模式。輝煌,再次感謝。 – Matt 2010-08-21 12:22:52

+0

@Matt:很高興你解決了它。請注意,我之前的描述不正確。更新我的答案,試圖糾正混亂:) ...(對不起,沒想到) – 2010-08-21 12:33:11

相關問題