2013-07-04 2 views
0

Я Дев на JQuery плагин, и я использую этот шаблонный jqueryboilerplate, мой плагин есть ссылка на текстовое поле и я звоню событие как нажатие этойметода вызова внутри события нажатия клавиши

init: function(){ 
    $(this.element).keypress(function(){ 
    alert('hey'); 
    }); 
}, 

так это оповещение правая работа, поэтому внутри нажатия клавиши он не может видеть мои локальные методы. не

init: function(){ 
    $(this.element).keypress(function(){ 
    this.sayHey(); 
    }); 
}, 
sayHey:function(){ 
    alert('hey'); 
} 

ответ

0

В ключевом прессе обратного вызова, значение this больше не ссылается ваш объект плагина. Попробуйте использовать that трюк, как это:

init: function(){ 
    var that = this; 
    $(this.element).keypress(function(){ 
    that.sayHey(); 
    }); 
}, 
sayHey:function(){ 
    alert('hey'); 
} 
1

Другим решением является использование $.proxy передать пользовательский контекст события функцию обратного вызова

init: function(){ 
    $(this.element).keypress($.proxy(function(){ 
     this.sayHey(); 
    }, this)); 
}, 
sayHey:function(){ 
    alert('hey'); 
} 

Или лучше нет необходимости создавать анонимные функции здесь

Смежные вопросы