javascript - 使用 Ember.js 临时将 CSS 类添加到 DOM 元素

标签 javascript jquery animation ember.js timeout

背景信息:

我正在使用 Ember.js。

这是我的 View 代码:

App.AddView = Ember.View.extend({
  classNameBindings: ['enter:enter:leave', 'dropped:dropped:leave'],
  enter: false,
   drop: function(event) {
     event.preventDefault();
     event.stopPropagation();
     this.set('dropped', 'true');
     this.set('text', 'Thanks');
   }
 });

还有我的 Handlebars 代码:

<script type="text/x-handlebars" id="add">
  {{#view App.AddView id="drop"}}
      {{msg}}
  {{/view}}
</script>

当我把一个元素放在上面时,它会说“谢谢”并变成蓝色。太棒了。

目标:

我想做的是将“谢谢”和蓝色保留几秒钟,然后淡出回页面加载时显示的常规颜色和消息。我在 Ember.js 中找不到执行此操作的示例,并且我所有尝试仅使用常规 jQuery 方式执行操作的尝试似乎都不起作用。

问题:

如何在 Ember.js 中使操作(将类应用于元素、更改元素的文本等)设置为超时?

最佳答案

类绑定(bind)将在绑定(bind)满足条件时发生。为了实现延迟/动画效果,您必须使用 CSS3 动画(关键帧动画可能有效)或使用 JQuery。使用 JQuery 进行动画和其他复杂的 DOM 操作没有任何问题。

在 View 中,您可以使用 this.$() 方法访问限定范围的 JQuery 对象。您可以执行如下操作:

App.AddView = Ember.View.extend({  
   classNames: ['defaultState'],
   drop: function(event) {
     event.preventDefault();
     event.stopPropagation();

     this.$().animate({ backgroundColor: "#7cc9ea"}, 400);
     this.set('text', 'Thanks');

     Ember.run.later(this, function(){
       this.$().animate({ backgroundColor: "#FFFFFF"}, 400);
       this.set('text', '');
     }, 500);
   }
 });

为了使背景颜色具有动画效果,您将需要 jquery-color 插件。希望这可以帮助! :)

编辑:如果您想要设置背景动画或以其他方式操作嵌套元素的 DOM,您可以像平常一样使用选择器访问它;只需记住它从 View 的元素作为根节点开始。例如this.$('#myNestedButton')

关于javascript - 使用 Ember.js 临时将 CSS 类添加到 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22263521/

相关文章:

javascript - 为什么 JavaScript 字符串空白字符不匹配?

javascript - Jquery 将文本附加到元素

php - 显示从数组获取的值时出错

ios - iOS11 中奇怪的 uitableview 行为。单元格向上滚动并带有导航推送动画

javascript - 如何删除 Javascript 字符串中出现的所有字符 '?

javascript - 如何解决因在 React 中循环浏览图像而导致速度变慢的问题?

javascript - 使用 ajax 分页的 Google Rich Snippet

css - 我想在翻译后旋转但旋转效果不起作用(CSS 3 aniamtion)

ios - 如何在单独的动画中将 CGAffineTransform 链接在一起?

javascript - jquery hide() 方法不适用于平板电脑/移动设备