2011-03-04 380 views
2

我想知道爲什麼使用觀察者更好,而不是直接將操作添加到onclick =「」。onClick vs觀察員

例如。

$('mybutton').observe('click', respondToClick); 

vs 

<a href="#" onclic="respondToClick()">button</a> 

感謝

回答

6

這是一個相當普遍的問題,所以我會向您推薦一個quality article上quirksmode.org,回答這個問題,其他的問題,你可能對事件處理。

下面是摘錄:

<a href="somewhere.html" onclick="alert('I\'ve been clicked!')"> 

認識到事件處理 這古老的方式是 事實上由Netscape規範是非常重要的。所有 其他瀏覽器,包括Explorer, 必須符合Netscape 2 和3處理事件的方式,如果他們想要 JavaScript才能工作。因此這些 古代事件和事件處理程序在所有JavaScript瀏覽器中工作 。

玩得開心閱讀。

2

一般來說,大多數人會建議保持你的JavaScript與你的HTML分開,以便更快的HTML頁面呈現。由於跨瀏覽器不兼容性,代碼

2

最大的原因是observe允許您通過JavaScript代碼註冊和註銷多個觀察者,而分配給onclick的代碼少了很多靈活。

2

對我來說,主要有三個原因是這樣:

  1. 我喜歡讓我的HTML模板抽象。在標記中嵌入JavaScript代碼意味着我的代碼重新用於該模板代碼會受到一些阻礙。您需要確保您可以將腳本文件包含在文檔的頭部。 (對於某些CMS系統,這可能有點麻煩配置)
  2. 你將如何刪除該事件處理程序? el.onclick = null;不會總是有效。 IE有一種允許內存泄漏的方法。
  3. 通過類名或id的應用行爲爲您的JavaScript代碼提供了比在onclick處理程序中保留更多的可用性。