我正在使用jQuery 1.7。我正試圖弄清名稱空間應該如何工作。我可以得到一些工作部分,但不完全如我所期望的那樣工作。我期望在輸入表單元素時,函數checkPasswordForm將觸發並提醒字段的值。JavaScript對象文字符號不按預期工作
我有這個表單元素。
<input type='text' id='Password'>
我期望這段代碼將創建一個名稱空間,創建一個對象並創建一個函數。
// SET NAMESPACE
var nsPASS = {
$Password: $('#Password'),
checkPasswordForm: function() {
var Password = $Password.val();
alert(Password);
}
};
nsPASS.$Password.keyup(nsPASS.checkPasswordForm);
此代碼不能運行。我得到一個錯誤,說$密碼沒有被定義。我修改了上千種不同的代碼來使它起作用。下面的版本按我的預期工作。看起來更多的代碼比完成任務所需的代碼更多。
// SET NAMESPACE
var nsPASS = {
$Password: $('#Password'),
init: function() {
$Password = $('#Password');
},
checkPasswordForm: function() {
var Password = $Password.val();
alert(Password);
}
};
nsPASS.init();
nsPASS.$Password.keyup(nsPASS.checkPasswordForm);
在第二個示例中,如果我刪除了nsPASS.init(),則代碼會中斷。如果我刪除密碼:$('#密碼')代碼會中斷。
我可以定義對象然後立即在函數中使用它們嗎?爲什麼第一個例子工作,但第二個例子不工作?
在第二個例子你'init'函數定義一個全局變量'$ Password',它不設置對象的'$ Password'財產。 – nnnnnn 2013-03-07 20:32:46
變量和屬性是不同的。 – Peeyush 2013-03-07 20:40:00