2013-07-12 140 views
0

jQuery插件。將其設置在輸入上。JQuery插件不起作用

onkeydown事件必須調用KeyDown。但對於控制檯的迴應,我看到:

Uncaught TypeError: Object #<HTMLInputElement> has no method 'KeyDown' 

在寫插件我是一個新手。因爲它是由jQuery的覆蓋

;(function ($, window, document, undefined) { 

function Plugin(element, options) { 

    var defaults = { 
     width:  270, 
     height:  300 
    }; 

    this.element = element; 
    this.el   = $(element); 
    this.options = $.extend({}, defaults, options) ; 

    this.init(); 
} 

Plugin.prototype = { 

    init: function() { 
     this.el.on('keydown', function (e) { this.KeyDown(e); }); 
    }, 

    KeyDown: function (e) { 
     console.log('Yeah!!!'); 
    } 

}; 

$.fn.myplugin= function (options) { 
    return this.each(function() { 
     if (!$.data(this, 'plugin_myplugin')) { 
      $.data(this, 'plugin_myplugin', 
      new Plugin(this, options)); 
     } 
    });  
} 
})(jQuery, window, document); 
+0

@soul,你甚至看這個問題? –

+0

你有更多的代碼可以看嗎? HTML,以及您在哪裏啓動/包含插件。 – putvande

回答

3

this關鍵字不會在功能function (e) { this.KeyDown(e); }內工作。新的this引用該元素。

嘗試類似:

init: function() { 
    var self = this; 
    this.el.on('keydown', function (e) { self.KeyDown(e); }); 
},