Javascript 插件中未触发onKeyup和onChange事件
我正在为我的网站创建一个插件。我的目的是从网站上获取一些数据并将其编译成对象 然后,当文本输入到可编辑的范围中时,我将通过这些对象进行搜索。然而,每当我输入数据时,Javascript 插件中未触发onKeyup和onChange事件,javascript,Javascript,我正在为我的网站创建一个插件。我的目的是从网站上获取一些数据并将其编译成对象 然后,当文本输入到可编辑的范围中时,我将通过这些对象进行搜索。然而,每当我输入数据时,test方法似乎不会被调用。有什么想法吗 var MarvSearch = function(elm, options) { this.element = elm; this.options = jQuery.extend({}, this.defaults, options); this.makes = n
test
方法似乎不会被调用。有什么想法吗
var MarvSearch = function(elm, options) {
this.element = elm;
this.options = jQuery.extend({}, this.defaults, options);
this.makes = null;
this.models = null;
this.init();
}; MarvSearch.prototype = {
init: function() {
var $models = [], $makes = [];
// Filter model array into objects
$(modelItems).each(function() {
var $num = $(this)[2].match(/\((.*)\)/)[1],
$title = ($(this)[2].replace(/\((.*)\)/, '')).trim(),
$entry = { 'makeID': $(this)[0], 'modelID': $(this)[1], 'title': $title, 'num': $num };
$models.push($entry);
});
// Filter make select options into array
$('#make option').each(function() {
if ($(this).val() !== '')
$makes.push({
makeID: $(this).val(),
title: ($(this).text()).replace(/\((.*)\)/, '').trim(),
num: $(this).text().match(/\((.*)\)/)[1]
});
});
this.models = $models;
this.makes = $makes;
},
defaults: {
},
attach: function() {
var self = this;
JQuery(this.element).bind({
'change.MarvSearch': function(){ self.test(this.element); },
'keyup.MarvSearch': function(){ self.test(this.element); }
});
},
test: function() {
console.log(this.element);
}
};
var MarvSearch = new MarvSearch(document.getElementById('marv-search'));
您将
this.element
传递给test()
,但无法提取任何参数console.log()
不是千里眼。this.element
应该是在顶部初始函数中设置的,这似乎是attach方法@Roamer-1888Ah的情况,我现在明白你的意思了@Roamer-1888,我已将其更改为self.test()
@MartynBall但它确实执行默认值
等等?大概您发现了JQuery
打字错误,现在应该使用.on()
而不是.bind()
。您将这个.element
传递到test()
中,但无法提取任何参数console.log()
不是千里眼。this.element
应该是在顶部初始函数中设置的,这似乎是attach方法@Roamer-1888Ah的情况,我现在明白你的意思了@Roamer-1888,我已将其更改为self.test()
@MartynBall但它确实执行默认值
等等?大概您发现了JQuery
打字错误,现在应该使用.on()
而不是.bind()
。