27.06.2013, 17:41
|
sinistral
|
|
Регистрация: 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
извиняюсь, мимо кассы.
решений несколько:
- запомнить контекст в замыкании. Запускаемый пример тут : 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'));
- запомнить контекст без создания замыкания (это лучше, чем с созданием замыкания). для этого передаём параметр 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.
|