jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – 使用Backbone.js创建后为HTML元素设置动画大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的代码如下.在这种情况下,如何使用类似动画的 JQuery调整元素大小?详细信息在代码中写为注释.

模板:

<script id="content_template" type="text/template">
        <div
                class="content"
                style="position: absolute;
                    top:<%= top %>px;
                    left:<%= left %>px;
                    width:<%= width %>px;
                    height:<%= height %>px; "
        ></div>
</script>

模型:

var FrameObject = BACkbone.Model.extend({
    defaults: {
        top: 0,left: 0,width: 1,height: 1
    }
});

采集:

var FrameObjects = BACkbone.Collection.extend({
    model: FrameObject
});

对象视图:

var Object_view = BACkbone.View.extend({
    template: _.template($("#content_template").html()),render:function(){
        return this.template(this.model.toJSON());
    }
});

对象容器视图:

var App_view = BACkbone.View.extend({
    el: $(".container"),events: {
        "click .container": "create_object"
    },create_object: function(event){
        var frame_object = new FrameObject({
            top: event.pageX,left: event.pageY,width: 100,height: 100
        });
        frame_objects.add(frame_object);

        var object_view = new Object_view({model: frame_object});
        this.$(".container").append(object_view.render());

        /* here I want to change the 'top' & 'left' attributes of the object model
           and want my object_view to animate to that position. Same as it would do for -

           someElement.animate({top: newTop,left: newLeft});
        */
    }
});

解决方法

我写了一个简单的例子

var FrameObject = BACkbone.Model.extend({
    defaults: {
        top: 0,height: 1
    }
});

var FrameObjects = BACkbone.Collection.extend({
    model: FrameObject
});

var ObjectView = BACkbone.View.extend({
    className: 'frame',initialize: function() {
        this.model.on('change',this.animate,this);
    },render: function() {
        var params = _.extend(this.model.toJSON(),{ position: 'absolute' });
        this.$el.css(params);
        return this;
    },animate: function() {
        this.$el.animate(this.model.toJSON());
    }
});

var AppView = BACkbone.View.extend({
    el: $("#container"),events: {
        "click": "createObject"
    },createObject: function(event) {
        var frameObject = new FrameObject({
            top: event.pageY,left: event.pageX,height: 100
        });

        var frameObjects = new FrameObjects();

        frameObjects.add(frameObject);

        var objectView = new ObjectView({
            model: frameObject
        });
        this.$el.append(objectView.render().el);

        setTimeout(function() {
            frameObject.set({
                // 500 — width of #container
                top: Math.random() * 500,left: Math.random() * 500
            })
        },1000);
    }
});

var appView = new AppView();

http://jsfiddle.net/theotheo/4Y8gy/

请注意,我对您的代码进行了一些更改.首先,我更改了AppView的事件哈希,或者更确切地说我省略了选择器,because

看起来它正是你想要的.其次,我删除了ObjectView的模板.当然,你可以使用它,但在这种情况下,我认为没有必要.第三,我重命名了变量for the sake of consistency.随意问.

大佬总结

以上是大佬教程为你收集整理的jquery – 使用Backbone.js创建后为HTML元素设置动画全部内容,希望文章能够帮你解决jquery – 使用Backbone.js创建后为HTML元素设置动画所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。