1

我在 EJS 模板上执行 jQuery 代码时遇到问题。我的代码:

$.json('/data.json', function (data) {
    new EJS({url: 'template.ejs'}).update('mycontainer', {data: data});
})

有用。但是当我尝试在这个模板上使用一些 jQuery 插件时 - 什么都没有。我的 EJS 模板示例:

<script>
   alert(0);
   $(document).ready(function () {
      $('#someId').someJQplaugin();
   })
</script>
<div id="someId"><%= data.someValue%></div>

插件和警报(!!)不起作用。然后我在标签之间替换我的代码<% %>。警报和 document.ready 正在工作,但 jQuery 在附加的 EJS 模板中找不到对象。

我尝试在模板外使用 jQuery,但结果是一样的:

$('#someId')一片空白。

如何同时使用 EJS 和 jQuery?

4

1 回答 1

0

我解决了一个问题,我猜。EJS 没有关于更新/插入的回调。我已经像这样扩展 EJS:

EJS.Prototype = {
   ...
   update: function(element, options, cb) {
   ...
   // add this to the end of function
   if(cb != null)
      cb();
   }

现在我可以像这样执行回调:

new EJS({url: template}).update(obj.attr('data-selector'), {data: data}, function () {
   // it works
   $('#someId').someJQplugin();
});

希望,这会帮助某人)

于 2014-12-23T11:58:57.027 回答