如何在模板

时间:2016-07-11 12:27:47

标签: javascript jquery templates meteor

使用jQuery从模板中检索Span元素时遇到问题。这是我的代码:

Template.item.events({
'click .remove':function(event,tpl){
        Meteor.call('tasks.remove',this._id);
        var docEmail=tpl.find('#DocName');
        alert(docEmail.text());
        Meteor.call('doc.removeAuthorization', docEmail, this._id);

    },});

我对模板的定义:

<template name="item">
 <li class="{{#if ischecked}}mychecked{{/if}}">
   <input type="checkbox" checked="{{ischecked}}" class="check-box"/>
   <strong><span name="DocEmail" id="DocName">{{content}}></span></strong>
   <span> {{CreatTime}}</span>
   <button class="remove">&times;</button>      

 </li></template>

以下是模板放置在正文中的方式:

<ul>
{{#each tasks}}
    <li>{{> item}}</li>
{{/each}}
</ul>

我已经阅读了很多关于如何使用jquery或jscript来获取span文本的帖子。我想我已经尝试了所有这些。所有人都给了我类似的错误:

body.js:162 Uncaught TypeError:无法读取属性'text'为null

我也尝试使用和tpl.find(“。DocName”)。得到了同样的错误。

还尝试了tpl。$()。同样的错误。

这是因为当调用template.find()函数时,span元素不存在吗?

但是我看到人们使用类似的代码来获取DOM元素(除了span文本)并且成功。

我认为我的tasks.remove可能会在调用jQuery之前删除文本。所以我改变了调用两个Meteor.call的顺序。就像这样:

Template.item.events({
'click .remove':function(event,tpl){
        Meteor.call('tasks.remove',this._id);
        var docEmail=tpl.find('#DocName');
        alert(docEmail.value);
        Meteor.call('doc.removeAuthorization', docEmail, this._id);

    },});

现在我得到了未定义的警报。 如果我使用docEmail.val()或docEmail.text(),我会得到“docEmail.val()不是函数。”

希望你们能对它有所了解! 谢谢!

2 个答案:

答案 0 :(得分:0)

我觉得它很有用:

$( "span" ).each(function( index ) {
  console.log( index + ": " + $( this ).text() );
});

答案 1 :(得分:0)

好的,试试这个,

var docEmail=tpl.find('#DocName').value;

没有&#34;()&#34;