Re: [問題] 為何要使用 bind 呢?(已解決)
※ 引述《godgiraffe (小鹿)》之銘言:
: 各位大大好
: 寫 php javascript 寫了約1年多了@_@
: 也使用過 dojo, jquery 這些東西..
: 最近想到一個問題,既然可以這樣寫
: <input type="button" id="send_msg" name="send_msg" onClick="send_msg()">
: 那為什麼有些人要這樣子寫呢?(使用 jquery 中的 bind )
: $("send_msg").bind("click", function (){
: .....
: });
: 使用 bind 這種寫法不是很不直覺嗎?(對我來說啦)
: 第一種寫法的 debug 流程:
: 尋找名為 send_msg 的按鈕 -> 看它 click 的時候會做什麼
: 第二種寫法的 debug 流程:
: 尋找名為 send_msg 的按鈕 -> 結果發現它 html 中, onClick 沒寫東西 ->
: 再接著去尋找是不是有用 jquery 去 bind 它
: 這樣子,第二種寫法有什麼好處呢??(目前看到好多人都使用第二種寫法,可是
: 我卻不知道第二種寫法的優點在哪邊)
: 新手發問,請各位先輩指點指點
有一個不算優點的優點:
html裡沒有 id=send_msg
或
js裡沒有 function name=send_msg
網頁不會出錯
雖然這樣會增加 debug困難,
從另一方面來看,這作法降低了 js跟 html的相依性…
降低相依性可以做什麼?
假設今天有一個輸入框,
1. 要驗證已輸入的值,
2. 在使用者輸入一些資料的時候提供建議選項,
3. 最好還可以隨著資料輸入自動調整寬度,
(可能還有很多功能會是在程式開發的時候沒提到,但是上線後熊熊想起來的。)
這三個不同的功能可以怎麼做?
先排除全部擠在一個函數裡的做法,
<input onkeyup="check(); suggest(); modifyWidth();" />
<input class="check suggest modifyWidth" />
這兩個有什麼差別?
鍵盤事件偵測不到滑鼠複製貼上,怎麼辦?
好,keyup, keydown, mouseup, mousedown都要執行某個函數…喔,是某幾個函數。
如果今天決定要支援觸控螢幕的話…鍵盤事件更加詭異了,mouse? 那是什麼?
在 html裡用 onclick,干涉到 js實作,這部分應該全權由 js開發者調配。
(雖然通常都是一個人包辦全部……)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.194.247.116
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章