每次使用jquery时,Meren onrender都会工作

时间:2016-09-18 15:28:11

标签: jquery meteor

我有这段代码

   Template.drone.onRendered(function () {
       var userid = Meteor.userId();

       $('.table > tbody > tr').each(function() {
       var friendid = $(this).find("td:first").html();
       var userid = Meteor.userId();
       alert('this rendered inside each');
       });
      });

这是模板

Template name="drone">
               <table class="table">
        <thead>
            <tr>
                <th>Id</th>
                <th>Names</th>
                <th>Action</th>
            </tr>
        </thead>
        <tbody>
         {{#each allusers }}
            <tr>
                <td class="buttonId">{{_id}}</td>
                <td>{{profile.name}}</td>
                <td class="buttonAction">hi</td>
            </tr>
            {{/each}}
        </tbody>
    </table>
 </template>

上面的代码迭代一个表,并对表行中的数据执行一些有用的操作,即每个td中的id。

我想知道为什么这段代码alert('this rendered inside each');永远不会触发。

1 个答案:

答案 0 :(得分:0)

我打赌$('.table > tbody > tr')与任何事都不匹配。

您正处于allusers次迭代的“父”模板上下文中。在此阶段,您的tr尚未呈现。

您应该尝试使用名为userLine的新模板:

<template name="userLine">
 <tr>
  <td class="buttonId">{{_id}}</td>
  <td>{{profile.name}}</td>
  <td class="buttonAction">hi</td>
 </tr>
</template> 

然后,将#each替换为:

{{#each allusers }}
  {{ >userLine }}
{{/each}}

现在,您可以在此新模板上使用onRendered挂钩,它应该根据需要启动。