2013-12-17 33 views
0

我們開始使用typescript,因爲它很容易編譯成模塊,我們也從requirejs開始。有沒有辦法直接在html中綁定事件?像requirejs在代碼中設置事件

<a href="#" onclick="foo.bar();"> 
    <img src="foo.png" alt="foo"> 
</a> 

有usualy與動態地設置它

$("foo.selector").click((e) => { 
    this.bar(); 
    e.preventDefault(); 
}); 

沒有問題,但我們正好有2-3頁,我們有多達錶行的數百個(thousnds)和多達10多種事件/行。而設置事件需要0.5秒(可能看起來不是很多,但與其他頁面部分和東西一起它是很多)。我已經嘗試將它移動到「按需」設置,其中所有行都有mouseover => setup all the events,但這並沒有很好地發揮作用。我沒有使用任何優化思路,只有一個,將evnet綁定轉換爲html,並在代碼呈現後讓它們準備就緒。無論如何,require塊的內部似乎被屏蔽了這種行爲。

有沒有一種方法可以在html中使用它?

回答

0

通常使用諸如onclick這樣的事件處理屬性是非常糟糕的主意,人們正試圖擺脫這種方式。

如果您需要動態處理點擊並且您不希望(或不能)將事件偵聽器直接分配給元素,請考慮使用事件委派。有點像

$(document).on('click', "foo.selector", function(event) { 
    event.preventDefault(); 
    console.log("You clicked:", this); 
}); 

基本上在這種情況下,你的document對象定義一個事件偵聽器沒關係指定類型(如果有的話),你必須在頁面上有多少項目。在您定義偵聽器之後,它也會自動處理添加到頁面的任何新元素。

+0

看起來很有趣,將在幾個小時內檢查我的方案的細節和可能的實施。 – insider

+0

剛剛嘗試了一些測試,它的工作原理就像我需要的一樣,thx很多! – insider