【问题标题】:How to manipulate DOM after a template is rendered by jsRender?jsRender渲染模板后如何操作DOM?
【发布时间】:2012-08-14 15:36:00
【问题描述】:

我知道我们可以使用$(document).on(event, selector, function) 将事件连接到新添加的 DOM 元素上。但是我怎样才能在这些元素上做一些 jQuery。

说,我需要将datepicker 添加到一些input[type=date] 上。我该怎么做?

----更新-----

我的外部模板应该放入

<div id="form-output">
</div>

但即使表单在浏览器中显示,模板中的 DOM 也不在上面的 div 中。如何使用 jQuery 访问这些 DOM?

【问题讨论】:

  • 从您的更新中,您是说将渲染模板添加到 div 中,它显示在浏览器中,但在 div 中不存在?当你说“外部模板”时,它是不是你在渲染之前通过 ajax 加载的东西,如果是这样,你是否在 ajax 回调中对返回的内容进行所有操作(添加到 div、附加 datepicker 等)?

标签: jquery jquery-ui jsrender


【解决方案1】:

jsRender 异步执行所有操作。它也没有任何类型的回调函数,所以创建你自己的:

$.when( { dojsRenderStuff } ).done(
       function(){ $("input[type=date]").datepicker();
    } 
);

http://api.jquery.com/jQuery.when/

【讨论】:

  • 谢谢。但是 dom 元素不在页面中。请看我的更新。
  • jsRender 的.render() 函数是同步的并返回渲染结果(这就是为什么没有回调函数)。如果将该结果添加到 DOM(例如使用 .append()),则可以立即选择它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 2019-04-27
  • 2023-03-19
  • 1970-01-01
  • 2012-02-06
相关资源
最近更新 更多