Расширение элемента DOM с jQuery

Я недавно считал Полный сновидений в Коде и нашел, что он был интересным чтением. Возможно, больше со дня я начал читать его, Chandler 1.0 был выпущен. Чтение о болезни роста и ошибках проектной группы талантливых людей, пытающихся "изменить мир", дает Вам много для приобретения знаний из. Также Scott поднимает много сведений программиста и мудрости, промежуточной, это - просто интересное чтение.

Красивый Код имел одну или две вещи, которые заставили меня думать по-другому, особенно глава по вершине вниз приоритет оператора.

6
задан Michiel van Oosterhout 1 January 2012 в 19:49
поделиться

4 ответа

Проблема возникнет, когда вы захотите получить элемент позже. Возможно, вы можете просто сохранить расширения как данные элемента, например:

var new_div = $('<div id="new_div" />');
new_div.data('m', new MyClass());

Затем, чтобы вызвать функции позже, вы должны сделать что-то вроде:

new_div.data('m').changetext(new_div)

И передать div в качестве аргумента.

1
ответ дан 10 December 2019 в 02:51
поделиться

Вы можете создать свой собственный объект, как вы это делаете. Затем вы можете использовать метод jQuery extension для расширения элемента.

1
ответ дан 10 December 2019 в 02:51
поделиться

Вы также можете сделать это как плагин:

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')
1
ответ дан 10 December 2019 в 02:51
поделиться

jQuery не сможет понять m, когда вы передадите его в строку добавления, потому что он принимает только строки и элементы. Ваш MyClass, вероятно, будет иметь специальный ключ для хранения самого элемента (например, this.el = document.createElement ("div");), но jQuery не сможет найти его самостоятельно.

0
ответ дан 10 December 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: