Я недавно считал Полный сновидений в Коде и нашел, что он был интересным чтением. Возможно, больше со дня я начал читать его, Chandler 1.0 был выпущен. Чтение о болезни роста и ошибках проектной группы талантливых людей, пытающихся "изменить мир", дает Вам много для приобретения знаний из. Также Scott поднимает много сведений программиста и мудрости, промежуточной, это - просто интересное чтение.
Красивый Код имел одну или две вещи, которые заставили меня думать по-другому, особенно глава по вершине вниз приоритет оператора.
Проблема возникнет, когда вы захотите получить элемент позже. Возможно, вы можете просто сохранить расширения как данные элемента, например:
var new_div = $('<div id="new_div" />');
new_div.data('m', new MyClass());
Затем, чтобы вызвать функции позже, вы должны сделать что-то вроде:
new_div.data('m').changetext(new_div)
И передать div в качестве аргумента.
Вы можете создать свой собственный объект, как вы это делаете. Затем вы можете использовать метод jQuery extension для расширения элемента.
Вы также можете сделать это как плагин:
jQuery.fn.myKindOfElement = function(msg) {
var foo = msg; // foo is basically a private member
this.alertFoo = function() {
alert(foo);
};
this.setFoo = function(msg) {
foo = msg;
};
this.changeText = function(text) {
// doesn't make sense because html already exists here
this.html(text);
};
};
Затем для любого элемента:
var myKind = $('<div/>').myKindOfElement('bar');
$('body').append(myKind);
myKind.alertFoo(); // alerts 'bar'
myKind.changeText('blah'); // same as myKind.html('blah')
jQuery не сможет понять m, когда вы передадите его в строку добавления, потому что он принимает только строки и элементы. Ваш MyClass, вероятно, будет иметь специальный ключ для хранения самого элемента (например, this.el = document.createElement ("div");), но jQuery не сможет найти его самостоятельно.