Re: [心得] 從 js 到 jQuery 之三:可怕的事件叢林

看板Web_Design作者 (沉默是金)時間17年前 (2008/08/09 12:57), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《ybite (小犬)》之銘言: : 恕刪 : 這樣寫比較好吧?至少比較好懂 : $("input[type=button]").click(function(e){return false;}); : 還是這算是我龜毛? XD : 來解決一下原文click太多的問題 個人習慣問題 沒什麼好不好 , 上面的條件比較複雜 , 表示為 input( tag selector) 中 再加上 [type=button](attr selector) : * 一個使用頻率頗高的Event是ready,尤其是$(document).ready() : 可以做為window.onload的完美替代 : 以下的「頁面載入好」技術上而言是指DOM已經可以使用了 : jQuery手冊中講「JS code得在這之後跑的機率是99.9%」 XD : (http://docs.jquery.com/Events/ready#fn) : $(document).ready( : function() : { : $('#content').html('頁面載入好後,<strong>置換HTML的內容</strong>'); : $('#not-secret').hide(); /* 頁面載入好後隱藏內容 */ : } : ); 嗯 , 所以這個寫法有簡式 , 可以寫成這樣. $(function(e) { $('#content').html('onloaded!!'); } ); 當jquery selector 收到的是function , 會直接在onload執行. ──────────────────────────────── 基本上執行javascript 的code我們會建議有兩個位置, 一個是寫在onload裡面 , 另一個就是寫在 </body>之前 , 但是如果是有要異動到頁面元素(append , remove 等,document.write除外) , 因為ie 下會有在dom 結構尚未完成就去異動 , 會產生「網際網路連線已中斷」 的問題 , 跟異動html 有關的 code , 盡量用onload撰寫. : 坦白講,我發現jQuery在Event這一塊是我不太常用的部分 : 我是個非常慣用HTML中onxxxx系列Attribution的人 Orz 這其實也沒什麼不好 , 不過有幾個情境下我們會有一些特別的狀況, 看情況選用就好. 1.在非ie體系的瀏覽器不一定會在script讀完才顯示 , 就算是在ie體系下偶爾也會用script載入不同步的trick , 比方說以mouseover後透過jquery設定該物件的框線為紅色好了, 寫在onmouseover就等於是被綁死了 , 如果觸發時jQuery 還沒被載入 , 這時候就有機會冒js error. 2.行為的code被綁定在html之中 , 有些極端基本主義者會認為這樣是 很醜陋的事情 , 他們也想達到換一套js 換一套行為的作法. 不過我倒是同意 , 在綁定事件有一定規則的前提下 , 將事件與html分離 , 的確比較容易簡化. 比方說舉個最簡單的例子 , tr的onmouseover 讓該行背景變色, 與其一個一個tr去寫onmouseover onmouseout , 雖然這個工作可能大部分serverside都有for loop可以支援一次性撰寫, 但仍造成html閱讀時跟下載時的負擔. 不如透過 $("tr").hover( function(){$(this).css("background","red");}, function(){$(this).css("background","white");} ); 當然其實我覺得凡事沒有一定 , 各有各的好處便是. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.59.247 ※ 編輯: TonyQ 來自: 220.132.59.247 (08/09 14:23)
文章代碼(AID): #18dIF3Hg (Web_Design)
文章代碼(AID): #18dIF3Hg (Web_Design)