看板 Ajax 關於我們 聯絡資訊
最近喜歡用 observe 把一些函式綁在 event 上,但感覺還是有小小的差別 1.優點:可以綁不只一個 考慮數個檔交互 include 的現象 a.js include b.js 兩檔內各有一個 onload 這種寫法 onload = function(){....} 結果是只有一個 onload 能動 因為 onload 是一個變數,就好像 a=5; a=6; 最後 a 會被洗到 6 但如果是 observe,就都會動 Event.observe(this, 'load', function(){....}) 檢查變數,找不到變數的值被改變,可以說這或許是一種模擬? 比如說,從最外層的 parent 裏準備一個陣列,放所有 observe 設定 當事件 onload 發生時,用 for loop 掃一遍,找得到的全執行 但如果這樣做速度不是會很慢嗎? 2.缺點:有一點不相容 無法確定是不是我不會用,但我碰上了,正在迴避中.. $('id').onkeypress = function(event){return false}; 其實我是要做按鍵的過濾,比如限定只輸入數字之類 所以我攔截 onkeypress,必要時 return false; 上面那行可以使我的 input 一個字都打不出來 但如果用 observe 做,就不成了 $('id').observe('keypress', function(event){alert('la');return false}); 每按一個鍵,內部的函式有被執行(alert 有動作) 但是 return false 根本沒用,字還是一直被打出來 因為我要對一整個輸入陣列做設定 本來要用 [].each('observe', 'keypress', function(){}) 去設的 這下就不能用了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.219.65.16
lausai:呼叫event object的preventDefault method 或者把 07/23 17:41
lausai:returnValue設為false @@ 07/23 17:42
HuangJC:謝謝,這招有用,但有時 preventDefault 函式不存在.. 07/23 19:21
HuangJC:js 真恐怖,相容性問題一堆呀.. 07/23 19:22
lausai:記得preventDefault是標準 但IE沒有實作 在IE下必須要用非 07/23 19:45
lausai:標準的returnValue=false來代替 @@ 07/23 19:48
HuangJC:也不是,我在 IE 下有用 preventDefault;但還是我上面兩種 07/23 20:17
HuangJC:用法的差別,onload=function or observe,preventDefault未 07/23 20:17
HuangJC:必存在;反正判斷存在就呼叫,不存在就用傳回值.. 07/23 20:17