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,很麻烦