如何在jQuery document ready启动后呈现Backbone.js视图?

如何在jQuery document ready启动后呈现Backbone.js视图?,jquery,backbone.js,javascript-events,backbone-views,document-ready,Jquery,Backbone.js,Javascript Events,Backbone Views,Document Ready,我有一个简单的Backbone.js页面,在视图中,我从DOM中获取一个div,并向其中添加另一个div <body> <div id="starbase"></div> <script type="text/javascript"> (function($){ var ListView = Backbone.View.extend({ el: $("#starbase"), initialize: f

我有一个简单的Backbone.js页面,在视图中,我从DOM中获取一个div,并向其中添加另一个div

<body>
<div id="starbase"></div>
<script type="text/javascript">
(function($){

    var ListView = Backbone.View.extend({
        el: $("#starbase"), 

        initialize: function(){
            _.bindAll(this, 'render'); 
            this.render(); 
        },
        render: function(){
            $(this.el).append('<div id="starship"></div>');
        }
    });

    var listView = new ListView();
})(jQuery);
</script>
</body>

(函数($){
var ListView=Backbone.View.extend({
el:$(“#星基”),
初始化:函数(){
_.bindAll(这是“呈现”);
这个。render();
},
render:function(){
$(this.el)。追加(“”);
}
});
var listView=new listView();
})(jQuery);

在jQuery DOM就绪事件发生后,是否有任何方法可以强制启动此渲染函数?这意味着starship div只能在jQuery就绪之后添加到starbase div中。

只需在就绪事件上添加构造函数调用即可。请参见下面的示例:

(function($){

var ListView = Backbone.View.extend({
    el: $("#starbase"), 

    initialize: function(){
        _.bindAll(this, 'render'); 
        this.render(); 
    },
    render: function(){
        $(this.el).append('<div id="starship"></div>');
    }
});

 $( document ).ready(function() {
    var listView = new ListView();
});
})(jQuery);
(函数($){
var ListView=Backbone.View.extend({
el:$(“#星基”),
初始化:函数(){
_.bindAll(这是“呈现”);
这个。render();
},
render:function(){
$(this.el)。追加(“”);
}
});
$(文档).ready(函数(){
var listView=new listView();
});
})(jQuery);

只需在ready事件中添加构造函数调用。请参见下面的示例:

(function($){

var ListView = Backbone.View.extend({
    el: $("#starbase"), 

    initialize: function(){
        _.bindAll(this, 'render'); 
        this.render(); 
    },
    render: function(){
        $(this.el).append('<div id="starship"></div>');
    }
});

 $( document ).ready(function() {
    var listView = new ListView();
});
})(jQuery);
(函数($){
var ListView=Backbone.View.extend({
el:$(“#星基”),
初始化:函数(){
_.bindAll(这是“呈现”);
这个。render();
},
render:function(){
$(this.el)。追加(“”);
}
});
$(文档).ready(函数(){
var listView=new listView();
});
})(jQuery);

由于您的脚本位于
#starbase
div之后,因此它只有在创建之后才会执行,换句话说,这是您想要的方式,我很抱歉@TJ,可能您误解了。我希望在jQuery document ready事件触发后触发render函数。现在我相信,由于它是一个就地函数,它将在遇到它时触发(我认为这是在jQuery文档准备就绪之前)。如果我的假设有误,请纠正我。您的脚本位于文档的最底部,就在
结尾之前,这意味着所有DOM都准备好了。把它放在一个现成的处理器中没有实际的区别。如果您的
在比如说
中,那么DOM就绪事件将在hi@TJ中使用,我将不敢苟同。如果我将其放入渲染函数警报(“状态为“+document.readyState”);,它说状态是“正在加载”。如果DOM ready已经启动,它应该说“complete”对吗?我的观点是,由于您的
标记位于
标记的末尾,当您的脚本运行时,所有元素都已经创建,并且可以正常工作,因此不需要jquery DOM ready事件,因为您的脚本位于
#starbase
div之后,它只有在被创建之后才会执行,换句话说就是你想要的方式,我很抱歉@TJ,也许你误解了。我希望在jQuery document ready事件触发后触发render函数。现在我相信,由于它是一个就地函数,它将在遇到它时触发(我认为这是在jQuery文档准备就绪之前)。如果我的假设有误,请纠正我。您的脚本位于文档的最底部,就在
结尾之前,这意味着所有DOM都准备好了。把它放在一个现成的处理器中没有实际的区别。如果您的
在比如说
中,那么DOM就绪事件将在hi@TJ中使用,我将不敢苟同。如果我将其放入渲染函数警报(“状态为“+document.readyState”);,它说状态是“正在加载”。如果DOM ready已经启动了,它应该说“complete”对吗?我的观点是,由于您的
标记位于
标记的末尾,当您的脚本运行时,所有元素都已经创建好了,可以正常工作,因此,不需要jquery dom ready事件。请您解释一下OP的代码有什么问题,以及您的代码是如何解决的……问题是:“在jquery document ready启动后如何呈现Backbone.js视图?”。原始代码可能可以工作,但未使用ready事件。这就是代码的作用。你对答案投反对票有什么原因吗?这是你的假设。我要求澄清你的答案,因为我认为,通过将一些代码作为答案而不加解释(这样的答案无论如何都不被鼓励),OP认为他的代码实际上不起作用,而事实是它确实起作用了。这似乎误导了一个可怜的家伙的声誉。请你解释一下OP的代码有什么问题,以及你的代码是如何修复的……问题是:“在jQuery document ready启动后如何呈现Backbone.js视图?”。原始代码可能可以工作,但未使用ready事件。这就是代码的作用。你对答案投反对票有什么原因吗?这是你的假设。我要求澄清你的答案,因为我认为,通过将一些代码作为答案而不加解释(这样的答案无论如何都不被鼓励),OP认为他的代码实际上不起作用,而事实是它确实起作用了。这似乎是在误导一个穷人的名声。