Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.12.2009, 14:43
jvs jvs вне форума
Новичок на форуме
Отправить личное сообщение для jvs Посмотреть профиль Найти все сообщения от jvs
 
Регистрация: 24.12.2009
Сообщений: 4

Как по событию вызвать метод определенного экземпляра объекта
Нужно чтобы при создании экземпляра объекта в него передавался id элемента и по клику по этому элементу вызывался метод экземпляра объекта, который это событие создал. Подскажите пожалуйста как правильно это написать.
Ошибка явно в "this.Result()" так как this для него получается сам объект по которому производится клик, а не метод экземпляра объекта.
function btn(id) {
this.id = id;
this.Result = function(){
alert("id="+this.id);
}
this.Events = function(){
jQuery("#"+this.id).click(function () {
this.Result();
});
}
}
var objBtn = new btn("button1");
objBtn.Events();
Ответить с цитированием
  #2 (permalink)  
Старый 24.12.2009, 15:03
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

this переопределяется при вызове функции jQuery. Попробуйте использовать замыкания, как-то так:
function btn(id) {
this.id = id;
this.Result = function(){
alert("id="+this.id);
}
var me = this;
this.Events = function(){
jQuery("#"+this.id).click(function () {
me.Result();
});
}
}
var objBtn = new btn("button1");
objBtn.Events();
Ответить с цитированием
  #3 (permalink)  
Старый 24.12.2009, 15:08
jvs jvs вне форума
Новичок на форуме
Отправить личное сообщение для jvs Посмотреть профиль Найти все сообщения от jvs
 
Регистрация: 24.12.2009
Сообщений: 4

Спасибо большое, то что нужно!
Ответить с цитированием
  #4 (permalink)  
Старый 24.12.2009, 16:04
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

ну только переписал бы я этот код как-нибудь так (как минимум вынес бы метод в прототип)
function Btn( id ) {
    this._id = id;
    var onclick = bind( this.result, this );
    $('#'+id).click( onclick );
}

Btn.prototype.result = function() {
    alert( "id="+this._id );
}

function bind( f, o ) {
    return function() {
        f.apply( o, arguments );
    }
}

var btn = new Btn('button1');

p.s. jvs оформляй код нормально... и учись писать его так, чтобы было понятно, что там происходит
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как внутри класса вызвать метод из соседнего метода Shahurik Общие вопросы Javascript 2 13.11.2009 12:20
как вызвать функцию название которой находиться в строке dark Общие вопросы Javascript 3 14.10.2009 13:02
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 13:51
как вызвать функцию? pumpurumer jQuery 2 27.08.2009 19:39
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00