我正在尝试实现一个动画,其中一个项目在被选中后动画到左边.以下代码有效.但只有大约80%的时间.
JS
//myItem
Template.myItem.rendered = function(){
if(Session.get("selected_item") === this.data._id){
$(this.firstNode).addClass("selected");
} else {
$(this.firstNode).removeClass("selected");
}
};
Template.myItem.events({
"click .myItem": function(evt, template){
Session.set("selected_item", this._id);
}
});
//myItemList
Template.myItemList.helpers({
items: function(){
return Items.find();
}
});
Run Code Online (Sandbox Code Playgroud)
模板
<template name="myItem">
<div class="myItem">{{name}}</div>
</template>
<template name="myItemList">
{{#each items}}
{{> myItem}}
{{/each}}
</template>
Run Code Online (Sandbox Code Playgroud)
CSS
.myItem { transition: all 200ms 0ms ease-in; }
.selected { left: -20px; }
Run Code Online (Sandbox Code Playgroud)
我还试图将代码包装成一个Meteor.defer(),以确保所有内容都准备好做动画.
Template.myItem.rendered = function(){
Meteor.defer(function() {
if(Session.get("selected_item") === this.data._id){
$(this.firstNode).addClass("selected");
} else {
$(this.firstNode).removeClass("selected");
}
});
}; …Run Code Online (Sandbox Code Playgroud)