[ js ] prototype.js/observe
最近喜歡用 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
推
07/23 17:41, , 1F
07/23 17:41, 1F
→
07/23 17:42, , 2F
07/23 17:42, 2F
→
07/23 19:21, , 3F
07/23 19:21, 3F
→
07/23 19:22, , 4F
07/23 19:22, 4F
推
07/23 19:45, , 5F
07/23 19:45, 5F
→
07/23 19:48, , 6F
07/23 19:48, 6F
→
07/23 20:17, , 7F
07/23 20:17, 7F
→
07/23 20:17, , 8F
07/23 20:17, 8F
→
07/23 20:17, , 9F
07/23 20:17, 9F
討論串 (同標題文章)