求解一个 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]