繁体   English   中英

正确的方法在骨架.js中初始化jQuery库

[英]The right way to initialize jquery library in backbone.js

在jQuery中,如果我有一个库,我可以通过执行以下操作对其进行初始化。

<script>
$(document.ready).ready(function(){

$("#accordion").accordion(); // Jquery accordion library

}
</script>

现在在骨干网中:

Main.js

var MyView = Backbone.View.extend({

el: '#wrapper',

initialize: function(){
this.render();
},
render: function(){
$("#accordion").accordion();
}


});
var myview = new MyView();

这是正确的做法吗?

我认为正确的方法是更改​​:

$("#accordion").accordion();

至:

this.$el.find('#accordion').accordion();

文档

如果页面上包含jQuery,则每个视图都有一个$函数,该函数运行在该视图元素内的查询。 如果使用此范围内的jQuery函数,则不必在查询中使用模型ID即可提取列表中的特定元素,并且可以更多地依赖HTML类属性。 等效于运行:view。$ el.find(selector)

它应该是

$("#accordion", this.$el).accordion();

您应该意识到,使用此技术意味着dom元素可能尚未呈现,因此您的插件内部永远都不应引用dom-仅传入的JQuery对象(某些编写不佳的插件会这样做)。 如果发现此问题,请使用javascript setTimeout或下划线_defer等待对象呈现到页面上。

也。 如果你的问题是在问候你的关心更多的JavaScript DOM分离(又名淘汰赛或角的方法),那么你应该看看击退 它将主干模型与剔除视图模型和dom两种方式合并。 然后可以将JQuery插件声明为绑定,以便直接从您的dom模板中调用它们。 无需担心dom渲染。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM