2012-07-24 25 views
0

綁定事件使用JQuery的bind()認爲比簡單地做onclick ='bla(this)'更好,爲什麼?Javascript:使用jquery的bind()比使用onclick ='bla()'更好的爲什麼?

謝謝!

+0

保持JavaScript代碼進行標記確實是一個不錯的主意。 – Pointy 2012-07-24 21:52:34

+0

如果javascript對於頁面有意義是必要的,該怎麼辦?你會在腳本標籤中嵌入必要的部分,然後從onclick鉤住的內聯腳本中調用「可選」庫嗎? – Mithon 2012-07-24 21:54:48

+0

HTML是關於**內容**,而不是行爲。如果某些HTML元素的行爲應該明顯反映含義,那麼他們應該有類似「動畫」或「信息」等的類。 (也就是說,我不是一個形式主義者或狂熱分子或其他任何人;事實上我非常務實:-) – Pointy 2012-07-24 22:00:08

回答

5

因爲Unobtrusive JavaScript (UJS)是新的常態。

對於我來說,標記的行爲,從分離是最大的好處,但也有其他的東西,很方便吧,每個人都喜歡不同的方面。

@Esailija正確地指出,jQuery讓UJS 容易,在工作中,瀏覽器兼容性,瀏覽器的解決方法的層面來講,等等。 UJS不依賴依賴於jQuery上的,但JS庫已經在更廣泛的功能範圍內實現了可行性。

+0

它雖然更短:) – Tom 2012-07-24 21:48:45

+0

嗯,我正要寫一個關於jQuery事件模型(標準化,bug修復,委託,shimmed事件,如mouseenter和mouseleave等等)的好處的回答,然後看到這個獲取勾選。 fuu – Esailija 2012-07-24 22:06:41

+0

@Esailija沒有理由不添加它,雖然它沒有內在聯繫 - 但jQuery讓UJS變得非常容易。我會添加一個註釋到答案爲雅';) – 2012-07-24 22:08:59

0

使用jQuery事件,您可以獲得6年的錯誤修復,事件對象規範化,命名空間,對事件的支持,如mouseenter,mouseleave,focusin和focusout,這些事件原本是專有的IE事件和事件委託。

附帶任何種類的JS(不只是jQuery的)事件,您將獲得:

  • 有用的對象上下文
  • 有用的功能範圍
  • 能夠連接多個處理程序相同的事件在同一元素

而如果你要動態生成HTML:

  • 理智,你不必連接字符串來生成代碼,你只寫事件處理程序代碼就像任何其他代碼,而不必擔心你的字符串是如何先被解釋爲一個JavaScript字符串結束,然後通過HTML,然後作爲JavaScript代碼(是的,三個階段。我甚至沒有得到第一次修訂如下右圖):

    var html = '<div onclick="alert(\''+someVar+'\'+\'hello\');"></div>' 
    

    是不太容易寫。比較

    $("<div>", { 
         click: function() { 
          alert(someVar + "hello"); 
         } 
        }); 
    
0

在我的經驗是有代價的,應反對使用他們的利益進行加權抽象。

在jQuery中的情況下,我發現,當時它爲我節省了遠遠超過任何缺點。舉個例子,你將如何在標準的javascript中編寫下面的例子。

$("ul").on("click", "li", function(){ }); 

這個jQuery method附加的事件處理程序的所有現在和將來的li元素。

實現這個功能並不是一個簡單的任務,並通過使用jQuery您使用的是高質量的代碼庫,試圖抽象瀏覽器的差異,並幫助你專注於編程。

相關問題