使用dojo.connect()添加事件處理器是很方便的,不用再考慮跨瀏覽器的問題了。但要想正確地使用這個方法,仍然要注意幾個問題:
1、用dojo.byId()獲取的是dom元素,而用dijit.byId()獲取的是dojo widget,這兩點是有根本不同的。
2、事件名稱的大小寫很關鍵,如果對dom元素添加事件處理器,事件名稱要小寫,例如click事件,可以用click或者on
click都行,但一定要把c字母小寫;如果對dojo widget添加事件處理器,事件名稱必須符合dojo的規范,例如click事件,一定要寫成onClick,字母o是小寫,而字母c一定要大寫。
3、如果要對某個頁面元素添加事件處理器,一定要根據這個元素是dom元素還是dojo widget,分別使用dojo.byId()或dijit.byId()來獲取元素引用。如果亂用,那么結果可能會添加失敗或出現不正常的情況。
注意以上這幾個問題,正確使用好dojo.connect()方法是沒有問題的。
例一:
<button id="btn">Click Me!</button>
<script type="text/javascript">
dojo.connect(dojo.byId('btn'), 'onclick', null, handler);
</script>
例二:
<button id="btn" dojoType="dijit.form.Button" label="Click Me!"></button>
<script type="text/javascript">
dojo.connect(dijit.byId('btn'), 'onClick', null, handler);
</script>
3、如果要對某個頁面元素添加事件處理器,一定要根據這個元素是dom元素還是dojo widget,分別使用dojo.byId()或dijit.byId()來獲取元素引用。如果亂用,那么結果可能會添加失敗或出現不正常的情況。
注意以上這幾個問題,正確使用好dojo.connect()方法是沒有問題的。
例一:
<button id="btn">Click Me!</button>
<script type="text/javascript">
dojo.connect(dojo.byId('btn'), 'onclick', null, handler);
</script>
例二:
<button id="btn" dojoType="dijit.form.Button" label="Click Me!"></button>
<script type="text/javascript">
dojo.connect(dijit.byId('btn'), 'onClick', null, handler);
</script>
-------------------------------------------------------------------------------------------------------
注:本文轉載於:http://blog.163.com/ma13481280654@126/blog/static/732525372011101715346673