BaSaRa 目前关心的是UI技术

今天整理了一下dojo事件机制,包括一些例子

1.普通绑定
dojo.event.connect(DOMNode, 'onclick', 'func');

2.绑定多个事件
dojo.event.connect(DOMNode, 'onclick', 'func1');
dojo.event.connect(DOMNode, 'onclick', 'func2');

3.绑定一个obj的两个方法
dojo.event.connect(DOMNode, 'onclick', evtObj, 'func1');
dojo.event.connect(DOMNode, 'onclick', evtObj, 'func2');

4.让绑定的事件顺序执行
var exampleObj = {
  counter: 0,
  foo: function(){
    alert("foo");
    this.counter++;
  },
  bar: function(){
    alert("bar");
    this.counter++;
  }
};
dojo.event.connect(exampleObj, "foo", exampleObj, "bar"); // 调用foo的话bar也会执行
这样也可以
dojo.event.kwConnect({
 type : 'before' // 让bar在foo之前执行
 srcObj : exampleObj,
 srcFunc : 'foo',
 targetObj : exampleObj,
 targetFunc : 'bar',
 delay : 2000 // bar延迟执行2秒
 once : true // 绑定一次
});
exampleObj.foo();

5.先后执行
dojo.event.connect("after", exampleObj, "foo", exampleObj, "bar"); // bar在foo之后执行
dojo.event.connect("before", exampleObj, "foo", exampleObj, "bar"); // bar在foo之前执行

6.传递参数
var evtObj = function() {
 this.func1 = function(a) {
  return(function(e) {
   alert((e||window.event).type);
  })
 };
 this.func2 = function(b) {
  alert(b);      
 };
}

var o = new evtObj();
var btn = dojo.byId("testBtn");
dojo.event.connect(btn, 'onclick', o.func1('hello'));

以前一般这样写:
function init() {
var evtObj = function() {
 this.func1 = function(a) {
  alert(a.type);
 };
 this.func2 = function(b) {
  alert(b);      
 };
}

var o = new evtObj();
var btn = dojo.byId("testBtn");
dojo.event.connect(btn, 'onclick', function(event){o.func1(event)});
这样的话你在第三个参数就要传递event,很麻烦

posted on 2006-06-02 15:59 BaSaRa 阅读(1946) 评论(0)  编辑  收藏 所属分类: Javascript


只有注册用户登录后才能发表评论。


网站导航:
 

My Links

Blog Stats

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜