所以我使用灰尘模板来渲染一些元素,并且在渲染模板之后,我绑定到其中一个元素的 jquery 事件不会触发。灰尘模板:
<input type="number" id="numAmounts" value={numAmounts}>
$(document).ready 中的 Jquery 事件绑定:
$("#numAmounts").on("blur", updateModel);
该事件根本没有触发,有人知道为什么吗?
所以我使用灰尘模板来渲染一些元素,并且在渲染模板之后,我绑定到其中一个元素的 jquery 事件不会触发。灰尘模板:
<input type="number" id="numAmounts" value={numAmounts}>
$(document).ready 中的 Jquery 事件绑定:
$("#numAmounts").on("blur", updateModel);
该事件根本没有触发,有人知道为什么吗?
听起来 Dust.js 模板是在 DOM 就绪事件触发后呈现的。这意味着当你的$(document).ready()
函数被执行时,不存在带有id
of 的元素numAmounts
,也没有绑定事件处理程序。
解决此问题的一种解决方案是使用事件委托:
$(document).on('blur', '#numAmounts', updateModel);
基本原则是事件处理程序绑定到一个确实存在的元素 - 在本例中是document
它本身 - 并且您为动态元素指定一个选择器,该选择器将出现在其中您想要对该事件做出反应的动态元素。理想情况下,您会选择更接近 HTML 结构中的动态元素的内容,而不是整个文档。
作为替代解决方案:通过简要阅读 Dust 文档,您似乎可以将回调函数传递给render
将在模板渲染后执行的函数。您可以在其中包含您的静态事件处理程序绑定,并且假设该元素将在该点存在应该是安全的。查看Dust.js 文档的回调接口部分。