2013-03-22 83 views
0

所以我使用灰塵模板來渲染幾個元素,並且在模板呈現後,我綁定到其中一個元素的jquery事件不會' t火。 灰塵模板:JQuery事件不會觸發Dust.js模板中的元素

<input type="number" id="numAmounts" value={numAmounts}> 

jQuery的事件綁定在$(文件)。就緒:

$("#numAmounts").on("blur", updateModel); 

該事件不會觸發所有,任何人有任何想法,爲什麼?

+0

ID是爲了獨特 – 2013-03-22 14:12:01

+0

我沒有任何其他元素與ID numAmounts – Cristiano 2013-03-22 14:12:46

+0

好吧,我壞壞然後 – 2013-03-22 14:13:30

回答

1

聽起來好像Dust.js模板正在渲染之後 DOM準備事件觸發。這意味着當您的$(document).ready()函數執行時,不存在具有idnumAmounts的元素,並且不綁定任何事件處理程序。

一個解決方案來解決,這是使用event delegation

$(document).on('blur', '#numAmounts', updateModel); 

的基本原則是,事件處理程序綁定到一個元素確實存在 - 在這種情況下document本身 - 你爲您想要對該事件做出反應的動態元素指定一個選擇器。理想情況下,您應該選擇比整個文檔更接近HTML結構中的動態元素。

作爲一種替代解決方案:通過Dust文檔的簡短閱讀,似乎您可以將回調函數傳遞給render函數,該函數將在模板渲染後執行。您可以在其中包含靜態事件處理程序綁定,並且應該可以安全地假設該元素將在該位置存在。看看Dust.js documentation回調接口部分。

+0

另一種解決方案可能是將綁定放入$(document).load函數中 – Cristiano 2013-03-22 14:54:32

相關問題