读书人

求解一个 JS怎么自定义事件的有关问题

发布时间: 2013-04-20 19:43:01 作者: rapoo

求解一个 JS如何自定义事件的问题
举个栗子,
easyui 的 控件 datagrid

$("#element1").datagrid("load") 假设这样的一个控件
datagrid 他是怎么定义 的 我前面只需要定义 我的元素 然后调用他控件,再调用对应的()里面的方法就好, 如果 load 方法有参数又该如何传过去? 这样的方式应该如何去定义?

我想写个 简单的小控件 ,学习下如何把我写的小控件绑定给指定的控件来使用,求大家帮忙下,谢谢了哈



[解决办法]
说白了就是jquery插件写法,你可上网查一下。
[解决办法]
从头自定义事件很复杂的,但使用框架就比较简单。jquery 和mootools都有很好的自定义事件机制。
如果你要自定义事件,第一件事就是要将原来的事件按一定的api去封装起来,然后才能在这个api基础上加上你的自定义事件,事实上也就是基于基础事件的伪事件,但都通过统一的api去调用,使用上就象是定义了一个新事件。
[解决办法]


$.fn.youName = (function(){
function selfEvent(el,event,callback){
this.event = {};
selfEvent.EL[el] = this;
this.on(el,event,callback);
}
selfEvent.prototype.on = function(el,event,callback){
this.event[event] = function(){
callback.apply(el,arguments);
}
}
selfEvent.prototype.fire = function(el,event,args){
this.event[event].call(el,args);
}
selfEvent.EL= {};

return function(event,argsOrCallBack){
$(this).each(function(){
var isBind = typeof argsOrCallBack === 'function';
if(isBind){
new selfEvent(this,event,argsOrCallBack)
}else{
selfEvent.EL[this].fire(this,event,argsOrCallBack);
}
});
}
})();

$('body').youName('test',function(data){
console.log(data)
});//绑定事件test
$('body').youName('test',[1,2,3,4])//触发test事件,参数为[1,2,3,4]


简单的表示一下吧。

大概就是这么个意思,以上代码还有很多东西要完善。

读书人网 >JavaScript

热点推荐