我正在使用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