JQuery插件不起作用

时间:2013-07-12 08:38:56

标签: jquery jquery-plugins

jQuery的插件。将其设置在输入上。

onkeydown事件必须致电KeyDown。但是为了响应控制台,我看到了这一点:

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

在编写插件时,我是新手。

;(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 );

1 个答案:

答案 0 :(得分:3)

this关键字在函数function (e) { this.KeyDown(e); }内不起作用,因为它被jQuery覆盖。新this引用元素。

尝试类似:

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