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 );
答案 0 :(得分:3)
this
关键字在函数function (e) { this.KeyDown(e); }
内不起作用,因为它被jQuery覆盖。新this
引用元素。
尝试类似:
init: function() {
var self = this;
this.el.on('keydown', function (e) { self.KeyDown(e); });
},