Показать сообщение отдельно
  #2 (permalink)  
Старый 27.06.2013, 17:41
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от shaltay Посмотреть сообщение
Доброго времени.
Не могу найти пример, как вызвать метод функции (объекта) из события внутри него. Если я неправильно делаю, поправьте меня плиз!

function obj(el) {

		this.block = el
		this.test = 'lalala'
		
		this.block.on('click',function(e){
			alert(this.test); // Проблемы вот тут!
		})
}
var el1 = new obj($('#el1'));
var el2 = new obj($('#el2'));

не "объекта", а "в jQuery"

метод называется trigger



извиняюсь, мимо кассы.

решений несколько:
  1. запомнить контекст в замыкании. Запускаемый пример тут : http://jsbin.com/iyaqup/1
    function obj(el) {
    
    		this.block = el
    		this.test = 'lalala'
    
    		var self = this; // MAGIC!!!
    
    		this.block.on('click',function(e){
    			// alert(this.test); // Проблемы вот тут!
    			// Проблема решена. вместо this используем self.
    			alert(self.test);
    		})
    }
    var el1 = new obj($('#el1'));
    var el2 = new obj($('#el2'));
    

  2. запомнить контекст без создания замыкания (это лучше, чем с созданием замыкания). для этого передаём параметр data. Для переваривания обратитесь к документации метода on

    Запускаемый пример здесь : http://jsbin.com/abepop/1

    function obj(el) {
    
    		this.block = el
    		this.test = 'lalala'
    
    		this.block.on('click', this  /* <--- параметр data */, function(e){
    			// alert(this.test); // Проблемы вот тут!
    			// Проблема решена. вместо this используем Event.data
    			alert(e.data.test);
    		})
    }
    var el1 = new obj($('#el1'));
    var el2 = new obj($('#el2'));
    



Последний раз редактировалось melky, 27.06.2013 в 17:54.
Ответить с цитированием