Re: [心得] 從 js 到 jQuery 之三:可怕的事件叢林
※ 引述《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)
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
Web_Design 近期熱門文章
PTT數位生活區 即時熱門文章