MooTools Hash / Object.each эквивалент в jquery - PullRequest
1 голос
/ 01 июня 2011


В моем проекте мне нужно конвертировать большой скрипт (плагин проверки формы) из mootools в Jquery. Его концепция ой в нем. Я много искал и нашел объектно-ориентированный плагин Jquery HJS и включил его, но у меня возникли проблемы в следующем ...

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) не запускается .....

Какой "новый Hash ()" эквивалентен в Jquery? как заменить функцию (el) в jquery?

Пожалуйста, помогите мне в этом ...

Спасибо,
HG

1 Ответ

2 голосов
/ 01 июня 2011

Хеш type в mootools - это, по сути, прототипный клон объекта type, который безопасно получает методы типа .each, .some и т. Д. - http://mootools.net/docs/more/Types/Hash

в конечном счете, вы работаете сjavascript, и вы можете обходить объекты в javascript с помощью выражения for var in object epression:

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 делалэто в хэш, а не фактический тип объекта.Хэш теперь устарел в пользу Object - http://mootools.net/docs/core/Types/Object

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...