无法调用插件

时间:2014-01-03 02:36:24

标签: jquery-plugins

我正在尝试开发一个将数据网格渲染为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. JQuery的
  2. csDatagrid(我的插件)
  3. csAuditarSesiones(带有当前页面代码的脚本,有插件调用)
  4. 谢谢!

    编辑1

    显然插件没有加载,请按照代码始终打印“Not Loaded!”:

    if(jQuery().csDatagrid) {
        console.log("Loaded !");
    }else{
        console.log("Not Loaded !");
    }
    

3 个答案:

答案 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的);