我正在尝试开发一个将数据网格渲染为html元素的插件。例如:
<div id="datagrid">
<!-- Renderizado via Backbone.js -->
</div>
我有这个插件定义:
// csDatagrid.js
(function($) {
$.fn.csDatagrid = function(options) {
// Code ...
};
}, (jQuery));
我用这种方式调用函数:
// csAuditarSesiones.js
$("#datagrid").csDatagrid({
columns: cols,
url: $("#sfAction").val(),
filterBy: 'user_str'
});
Chrome说:
未捕获的TypeError:对象[object Object]没有方法'csDatagrid'
加载库队列(Chrome开发者工具):
谢谢!
编辑1
显然插件没有加载,请按照代码始终打印“Not Loaded!”:
if(jQuery().csDatagrid) {
console.log("Loaded !");
}else{
console.log("Not Loaded !");
}
答案 0 :(得分:1)
我按照此link中的详细步骤进行操作。这对我有用。
答案 1 :(得分:0)
这里的原因是您在文档就绪事件中定义了插件。因此,调用此插件的元素必须在插件加载后调用插件。
尝试在load \ ready事件之外定义新插件,例如。
(function($) {
$.fn.csDatagrid = function(options) {
// Code ...
};
}, (jQuery));
$(document).ready(function(){
$("#datagrid").csDatagrid({
columns: cols,
url: $("#sfAction").val(),
filterBy: 'user_str'
});
});
只是为了参考(现在肯定读它)。 http://learn.jquery.com/plugins/basic-plugin-creation/
修改强> :
是否有可能加载多个jQuery版本?发生冲突时可能会发生这种情况。还要确保在javascript文件之后和文档就绪函数之前加载插件。
还有一个(我不知道为什么我相信它是在加载多个版本时)发生的现象,你必须将$ call添加回你的ready函数。如。。
$(document).ready(function($){
//TODO: Code here
});
答案 2 :(得分:0)
},(jQuery));应该是:
})(jQuery的);