Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在尚未呈现的元素上缓存DOM和绑定单击事件_Javascript_Jquery_Html_Caching_Template Engine - Fatal编程技术网

Javascript 在尚未呈现的元素上缓存DOM和绑定单击事件

Javascript 在尚未呈现的元素上缓存DOM和绑定单击事件,javascript,jquery,html,caching,template-engine,Javascript,Jquery,Html,Caching,Template Engine,稳定的应用程序开发需要严格的代码组织 进入清晰的“块” 为此,我使用mustach将脚本中的数据呈现到HTML中 我将我的胡子模板存储在特殊的脚本标记中: <script id="template" type="text/template"> Mustache template goes here and is invisible </script> 现在想象一下,我想将单击事件绑定到Mustach模板中的一个元素,或者缓存稍后将使用的元素。。。我显然不能在页面

稳定的应用程序开发需要严格的代码组织 进入清晰的“块”

为此,我使用mustach将脚本中的数据呈现到HTML中

我将我的胡子模板存储在特殊的脚本标记中:

<script id="template" type="text/template">
    Mustache template goes here and is invisible
</script>
现在想象一下,我想将单击事件绑定到Mustach模板中的一个元素,或者缓存稍后将使用的元素。。。我显然不能在页面加载时这样做,因为模板还没有呈现

要使事件正常工作,我必须仅在呈现HTML后声明事件。要使用元素,我必须在需要时手动选择它,例如$'.foo'而不是缓存的this.foo

其结果是,现在我的点击事件和jQuery选择散布在我的对象中,而不是bindEvents和cacheDOM函数中

下面是一个简化的问题示例:

在上面的例子中,这并不坏。。。但随着我的应用程序变得越来越复杂,这变得有点麻烦

现在想象一下,我想将一个点击事件绑定到一个小胡子中的元素 模板

我显然不能在页面加载时这样做,因为模板还没有呈现

使用jQuery可以满足此需求。元素的.innerHTML可以通过附加事件和事件处理程序传递给jQuery

jQuery.holdReady(true);
var template = jQuery($("#template").html());
// template.filter("element").on("event", function() {// do stuff})
jQuery("body").append(template);
jQuery.holdReady(false);
jQuery(function() {
  // do stuff
})

链接是不完整的,你可以包括html,javascript吗?你想达到什么目标?生活和食物的目的是什么?可能是@guest的复制品请看这里的小提琴:@JethroHazelhurst是的,不确定是什么问题?
jQuery.holdReady(true);
var template = jQuery($("#template").html());
// template.filter("element").on("event", function() {// do stuff})
jQuery("body").append(template);
jQuery.holdReady(false);
jQuery(function() {
  // do stuff
})