【问题标题】:Transitioning between 2 views back and forth在 2 个视图之间来回转换
【发布时间】:2013-12-13 08:44:21
【问题描述】:

我正在使用主干。 我有 2 个视图的 1 个模型。 DOM 充满了 GradSmallViews 您单击 1,它们都消失了,addClass(opacity: 0),但它们仍在 DOM 中。我想添加一个具有 display:none 的类,但它会取代过渡的其余部分。

但我离题了……更重要的是, 当 GradSmallViews 不透明时,会实例化 GradFullView(不知道如何转换)。当你点击它时,它会转出(addClass opacity:0 + left)并且 GradSmallViews 回来(addClass opacity:1);一切正常。当您尝试重复该过程时,它不起作用。我设置了当你点击 GradSmallView (removeClass opacity:1) 时应该发生。 remove 类闪烁,addClass 闪烁,然后又回到原来的样子; opacity:1 上的 removeClass 不生效,addClass opacity:0 也不生效。

这是代码 - CSS

.go-away {
left: 500px;
opacity: 0;
}

.come-back {
opacity: 1;
}

.grad-full {
width: 963px;
margin: 0 auto;
position: relative;
-webkit-transition: all .500s ease;
}

.grad-small {
margin: 0 15px 50px;
display: inline-block;
background: #EAEAEA;
box-shadow: 0px 0px 3px 1px #D3D3D3;
padding: 33px;
-webkit-transition: all 2s ease;
}

主干/JS

GradFullView = Backbone.View.extend({
template: _.template($('#grad-full-template').text()),

className: 'grad-full',

events: {
    'click #x'          : 'backToSmallViews'
},

initialize: function(){
    $('.goes-here').append(this.el);

    this.render();
},

render: function(){
    this.$el.append(this.template({grad: this.model}));
},

backToSmallViews: function(){

    this.$el.addClass('go-away');
    setTimeout(function(){$('.grad-full').remove()}, 600);
    setInterval(function(){$('.grad-small').removeClass('go-away').addClass('come-back')}, 600);       
}
})


GradSmallView = Backbone.View.extend({
template: _.template($('#grad-small-template').text()),

className: 'grad-small',

events: {
    'click'         : 'goFullView'
},

initialize: function(){
    $('.goes-here').append(this.el);

    this.render();
},

render: function(){
    this.$el.append(this.template({grad: this.model}));
},

goFullView: function(){
    $('.grad-small').removeClass('come-back').addClass('go-away');
    new GradFullView({model: this.model});

}

 })

我知道这很容易。它快把我逼疯了。提前感谢您的帮助。

【问题讨论】:

  • 所以每次 goFullView() 时都会创建一个新的 GradFullView。在初始化一个新的之前,请确保将 GradFullView 的 el 完全从 dom 中删除,否则您的事件将被绑定多次! (这可能是闪烁的原因)

标签: javascript jquery css backbone.js css-transitions


【解决方案1】:

问题是我有一个 CSS 转换,它不起作用,我忘记了,它与 Javascript add/removeClass 冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2016-12-21
    • 2011-11-29
    相关资源
    最近更新 更多