在我当前的项目中,用户可以创建一个帖子,并且每个帖子都在页面上进行迭代。
我遇到了班级冲突的问题。
我有一个具有类attend
的复选框,但是它与其他帖子和我创建的'click .attend'
函数冲突。
有什么办法为每个帖子创建一个唯一的类吗?
我试着做:
<input type="checkbox" id="check" class="{{this._id}}" checked="" />
但该功能不允许
'click .this._id'
我被困在该做什么。
最佳答案
听起来您正在以某种错误的方式进行操作。您可以具有相同的类,但是您需要为每个帖子放置一个模板。对于该模板的每个实例,该模板都可以轻松地到达正确的类。
<head>
<title>demosub</title>
</head>
<body>
<h1>Welcome to Meteor!</h1>
{{> allposts}}
</body>
<template name="allposts">
{{#each posts}}
{{> thepost }}
{{/each}}
</template>
<template name="thepost">
<div>
<span>{{_id}}</span>
<input type="checkbox" class="attend" checked="" />
</div>
</template>
然后在事件代码中添加模板“ thepost”
import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
import './main.html';
Template.allposts.helpers({
posts() {
return [{_id: 1}, {_id: 2}]
},
});
Template.thepost.events({
'click .attend': function(e,t){
var data = Template.instance().data // this is your post...
console.log(e.toElement.checked)
console.log(data)
}
})
在下面,您可以看到我在每个复选框上单击的位置,以及如何知道单击该复选框的位置:-
模板事件知道类“ attend”上的click事件与模板的实例相关联,并调用该事件处理程序。