作者grence (dalalida)
看板Ajax
标题Re: [问题] 为何要使用 bind 呢?(已解决)
时间Sat May 11 04:41:21 2013
※ 引述《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