2010-11-16 70 views
2

我喜歡jQuery在使用其「綁定」方法時包裝事件的方式。然而,設置綁定很尷尬。有什麼方法可以將html的易用性(例如onKeyPress="foo(event)")與jQuery獨立於瀏覽器的事件處理優點結合起來嗎?使用html附加jquery事件處理程序?

+0

到目前爲止,它看起來像答案是「否」:) – JoelFan 2010-11-16 19:26:07

+0

這可能是這種情況,取決於您對* ease *的看法。由於jQuery(作爲JavaScript)完全在JavaScript端操作,所以對HTML端的唯一訪問就是DOM API提供的橋樑。當然,HTML提供的橋樑是inline'on [event]'屬性。所以你真的看着這個或那個。 – user113716 2010-11-16 19:37:12

+0

@patrick,sux2bme – JoelFan 2010-11-16 19:39:00

回答

0

一個好主意是實際分開這兩個,讓你的HTML乾淨和js在一個單獨的位置。你可以嘗試像$('a').click(...)這樣的快捷方式,而不是$('a').bind('click'...),但就是這樣。我個人喜歡將綁定與標記分開。

+0

您的建議假設我想將每個'a'標記綁定到完全相同的處理程序 – JoelFan 2010-11-16 18:13:47

+0

這僅僅是一個示例.. – cambraca 2010-11-16 18:16:41

+0

我知道,但我的觀點是沒有通用模式 – JoelFan 2010-11-16 20:31:34

1

您的意思是?

function foo(event) { 
    alert(event.target); 
} 

$('.someSelector').keypress(foo); 

無論是在HTML或者你需要創建一個功能foo JavaScript的方式,所以也許這是更接近你所期待的。

我不確定你對jQuery的處理程序綁定感到尷尬。

+0

如果HTML元素沒有類或ID,那麼「someSelector」是什麼?難道不得不聲明一個元素爲HTML,然後返回並以某種方式將其定位到DOM中,並將一個事件處理程序附加到文件中的不同位置,而不是僅僅聲明元素及其事件處理程序時間? – JoelFan 2010-11-16 18:12:57

+0

@JoelFan - jQuery完全是從DOM中選擇,然後執行操作。如果元素沒有一致的標識符,並且你不希望爲了選擇的目的而添加一個標識符,那麼我想我不得不問一下你所做的jQuery處理程序綁定是什麼,這足以說服你計劃你的標記以適應DOM選擇。或者我錯過了你的觀點? – user113716 2010-11-16 18:27:27

+0

我喜歡jQuery獨立於瀏覽器的「包裝器」,它爲您提供事件處理程序... http://api.jquery.com/category/events/event-object/...我不同意jQuery是所有關於從DOM中選擇......這是關於獨立於瀏覽器的,更簡單的客戶端腳本......終於...我不是「計劃」我的標記......我正在修復沒有開發的現有標記jQuery – JoelFan 2010-11-16 19:02:38

1

你可能不想這樣做。

您可能需要閱讀event delegation in JavaScript,這些jquery綁定方法可以爲您處理整齊。

這裏的亮點:

事件代表團有幾個好處 到Web 應用程序的性能:

更少的功能來管理。佔用內存少 。您的 代碼與DOM之間的關係更少。當 通過innerHTML改變DOM時,不需要擔心 關於移除事件處理程序。

你最好不要使用jQuery的結合傭工像$ whatever.click(FN)等

其實here is another question on SO引用我這樣做,也可以幫助同一篇文章。

相關問題