0

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

1 回答 1

3

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

尝试类似:

init: function() {
    var self = this;
    this.el.on('keydown', function (e) { self.KeyDown(e); }); 
},
于 2013-07-12T08:45:28.873 回答