綁定事件使用JQuery的bind()認爲比簡單地做onclick ='bla(this)'更好,爲什麼?Javascript:使用jquery的bind()比使用onclick ='bla()'更好的爲什麼?
謝謝!
綁定事件使用JQuery的bind()認爲比簡單地做onclick ='bla(this)'更好,爲什麼?Javascript:使用jquery的bind()比使用onclick ='bla()'更好的爲什麼?
謝謝!
因爲Unobtrusive 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 method附加的事件處理程序的所有現在和將來的li元素。
實現這個功能並不是一個簡單的任務,並通過使用jQuery您使用的是高質量的代碼庫,試圖抽象瀏覽器的差異,並幫助你專注於編程。
保持JavaScript代碼進行標記確實是一個不錯的主意。 – Pointy 2012-07-24 21:52:34
如果javascript對於頁面有意義是必要的,該怎麼辦?你會在腳本標籤中嵌入必要的部分,然後從onclick鉤住的內聯腳本中調用「可選」庫嗎? – Mithon 2012-07-24 21:54:48
HTML是關於**內容**,而不是行爲。如果某些HTML元素的行爲應該明顯反映含義,那麼他們應該有類似「動畫」或「信息」等的類。 (也就是說,我不是一個形式主義者或狂熱分子或其他任何人;事實上我非常務實:-) – Pointy 2012-07-24 22:00:08