Обработка события элемента внутри создавшего его объекта
Здравствуйте, такая грабля:
Есть класс, у него есть методы. Один из методов генерит некие элементы DOM. Как сделать так, что-бы обработчик события созданного элемента DOM происходила внутри объекта? То есть: function MyClass() { this.Method = function(){ alert('Обработчик события');} this.Render = function() { // JQuery создаем элемент DOM и цепляем на него onclick $("<TD>").appendTo(parentElement).click(???????); } } Что поставить вместо вопросиков, чтоб при клике вызывался this.Method()? Хочется сделать красиво, чтоб объект был самодостаточным и вся работа проходила внутри него. Спасибо. |
$("<TD>").appendTo(parentElement).click('MyClass.M ethod');
|
$("<TD>").appendTo(parentElement).click(this.Method); А вообще методы лучше в прототип выносить. |
Цитата:
|
Потому, что при каждом создании объекта через конструктор, создаются одинаковые методы для каждого созданного экземпляра:
function MyClass(){ this.method = function(){}; // Ещё один новый метод } Если методы определять в прототипе, все созданные объекты будут использовать одну и ту же функцию: function MyClass(){} MyClass.prototype.method = function(){}; // Один на всех Это сильно снижает расход памяти. |
B~Vladi,
Почему то не могу поставить плюс ) Спасибо за ответ |
Цитата:
|
Спасибо большое, но не работает
$("<TD>").appendTo(parentElement).click(this.Method); Подозреваю, что потому, что this ссылается уже не на екземпляр моего класса, а на страницу. То есть не находит method. Но может я что-то накосячил, сейчас ещё раз все проверю. И ещё один вопрос. А как быть, если обработчик события должен принимать параметр? this.Method = function(id){ alert('Обработчик события с параметром '_id);} Спасибо. |
Прошу пардона, работает.
Но все таки как быть с параметрами? |
this.Method = function(evt){ alert('Обработчик события с параметром ' + evt.data); } $("<TD>").appendTo(parentElement).bind('click', this.Method, 'бла-бла-бла'); jQuery рулит, да?;) |
Часовой пояс GMT +3, время: 16:46. |