簡體   English   中英

Javascript:使用Jquery的bind()出價事件是否比僅執行onclick ='bla()'更好?為什么?

[英]Javascript: is biding events using Jquery's bind() better than simply doing the onclick='bla()' and why?

使用JQuery的bind()綁定事件是否比僅執行onclick ='bla(this)'更好,為什么?

謝謝 !

因為非侵入式JavaScript(UJS)是新常態。

對我來說,將標記與行為分離是最大的好處,盡管還有其他一些方便的方面,而且每個人都喜歡不同的方面。

@Esailija正確地指出,jQuery在工作水平,瀏覽器兼容性,瀏覽器解決方法等方面使UJS 更加容易。 UJS不依賴 jQuery,但是JS庫使它在更廣泛的功能中都可行。

使用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"); } }); 

以我的經驗,必須為抽象付出一定的代價,而應該權衡使用它們的好處。

對於jQuery,我發現節省的時間遠遠超過了任何缺點。 舉一個例子,您將如何用標准javascript編寫以下例子。

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

此jQuery 方法將事件處理程序附加到所有當前和將來的li元素。

實現此功能並非易事,通過使用jQuery,您正在使用高質量的代碼庫,該代碼庫試圖抽象化瀏覽器差異並幫助您專注於編程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM