在我的项目中,我需要将一个大脚本(表单验证插件)从mootools转换为Jquery。它有oops概念。我搜索了很多,发现了HJS面向对象的Jquery插件,但是在下面有问题但是...
initialize : function (form, options){
if (this.form = $(form)) {
this.form.isValid = true;
this.regex = ['length'];
this.alertMsg = [];
this.validations = [];
var regex = new Hash(this.options.regexp);
regex.each(function(el, key) {
this.regex.push(key);
}, this);
var alertMsg = new Hash(this.options.alerts);
alertMsg.each(function(el, key) {
this.alertMsg.push(key);
}, this);
$(form).find("*[class*=validate]").each(function(el) {
this.register(el);
}, this);
}
},
......
this.register(el)函数没有触发.....
Jquery中的“new Hash()”等价物是什么? 如何在jquery中替换函数(el)?
请帮助我...
谢谢,
HG
答案 0 :(得分:2)
mootools中的哈希type
基本上是一个原型对象克隆type
,可以安全地获取.each
,.some
等方法 - http://mootools.net/docs/more/Types/Hash
最终,你正在使用javascript,你可以使用for var in object
epression在javascript中处理对象:
var object = {
foo: "bar",
bar: "foo"
};
for (var key in object) {
alert(key);
alert(object[key]);
}
要考虑的事项:检查hasOwnProperty或在对象上设置__proto__: null
以避免出现以下问题:
Object.prototype.hello = "world";
var object = {
foo: "bar",
bar: "foo"
};
for (var key in object) {
alert(key); // foo, bar, hello
alert(object[key]);
}
相反,请执行:
var object = {
__proto__: null,
foo: "bar"
};
如果可用,这也可以作为new Object(null)
。
是的,原型设计对象不是一种安全的做法 - 因此mootools在Hash中进行,而不是实际的Object类型。哈希现已弃用,以支持Object
- http://mootools.net/docs/core/Types/Object