使用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">×</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()不是函数。”
希望你们能对它有所了解! 谢谢!
答案 0 :(得分:0)
我觉得它很有用:
$( "span" ).each(function( index ) {
console.log( index + ": " + $( this ).text() );
});
答案 1 :(得分:0)
好的,试试这个,
var docEmail=tpl.find('#DocName').value;
没有&#34;()&#34;