「穩定的應用程序開發需要將代碼 嚴格組織爲明確的」塊「。緩存DOM並綁定尚未呈現的元素上的點擊事件
爲此,我使用Mustache將腳本中的數據呈現到HTML中。
我存儲我的鬍子模板特殊的腳本標籤:
<script id="template" type="text/template">
Mustache template goes here and is invisible
</script>
要呈現在div
模板我只需調用鬍子渲染功能
var template = $('#template').html();
$('#someDiv').html(Mustache.render(template));
現在想象一下,我想綁定單擊事件到Mustache模板中的元素或緩存稍後將使用的元素......我顯然無法在頁面加載時執行此操作,因爲模板尚未呈現。
爲了讓事件正常工作,我必須在之後聲明一個事件我已經呈現了HTML。要使用元素,我必須在需要時手動選擇它,例如$('.foo')
而不是緩存this.foo
其結果是,現在我有('點擊)事件和jQuery選擇遍佈我的對象,而不是bindEvents和cacheDOM函數。
這裏是問題的一個簡化的例子小提琴:https://jsfiddle.net/6L2ry6hr/
在上面的例子是不壞......但我的應用程序變得更加複雜它正在成爲一個有點麻煩。
鏈接不完整 –
您可以在問題中包含'html','javascript'嗎?你想達到什麼目的? IIFE和'foo'對象的目的是什麼? – guest271314
[jquery事件不會在ajax調用後觸發]的可能重複(http://stackoverflow.com/questions/13767919/jquery-event-wont-fire-after-ajax-call) – Tibblez