自定义 jquery 插件:'plugin'不是一个函数

发布于 2024-12-18 20:51:54 字数 1516 浏览 1 评论 0原文

当我以这种方式绑定自定义插件时,它工作正常:

<script type="text/javascript">
    $("#MyGrid").customFilter({ postUrl: '@(Url.Action("SearchOffers", "Department"))' });
</script>

但如果我想等到文档准备好:

<script type="text/javascript">
    $(document).ready(function() {
        $("#MyGrid").customFilter({ postUrl: '@(Url.Action("SearchOffers", "Department"))' });
    });
</script>

$("#MyGrid").customFilter is not a function 错误出现。为什么?

自定义插件:

(function ($) {

    var theGrid;
    var filterTimeout;
    var mouseIsInside = false;
    var postUrl;

    var methods = {
        init: function (options) {

            return this.each(function () {
                postUrl = options.postUrl;
                theGrid = $(this);
                ...
            });
         },
    method2: function () {
        // ... 
    }
};

    $.fn.customFilter = function (method) {

        if (methods[method]) {
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Method ' + method + ' does not exist on  jQuery.customFilter ');
        }

    };

    //private functions
    function isFilterable(th) {
        var name = th.children("a").text();
        return (name.length > 0) ? true : false;
    }
...
})(jQuery);

when I bind custom plugin in a such way it works ok:

<script type="text/javascript">
    $("#MyGrid").customFilter({ postUrl: '@(Url.Action("SearchOffers", "Department"))' });
</script>

but if i want to wait till document is ready:

<script type="text/javascript">
    $(document).ready(function() {
        $("#MyGrid").customFilter({ postUrl: '@(Url.Action("SearchOffers", "Department"))' });
    });
</script>

$("#MyGrid").customFilter is not a function error appears. Why?

Custom plugin:

(function ($) {

    var theGrid;
    var filterTimeout;
    var mouseIsInside = false;
    var postUrl;

    var methods = {
        init: function (options) {

            return this.each(function () {
                postUrl = options.postUrl;
                theGrid = $(this);
                ...
            });
         },
    method2: function () {
        // ... 
    }
};

    $.fn.customFilter = function (method) {

        if (methods[method]) {
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Method ' + method + ' does not exist on  jQuery.customFilter ');
        }

    };

    //private functions
    function isFilterable(th) {
        var name = th.children("a").text();
        return (name.length > 0) ? true : false;
    }
...
})(jQuery);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鹤仙姿 2024-12-25 20:51:54

脚本文件应在 Telerik().ScriptRegistrar() 中注册

@Html.Telerik().ScriptRegistrar().DefaultGroup(group => group.Add("~/Scripts/gridFilter.js")) 

The script file should be registered in Telerik().ScriptRegistrar()

@Html.Telerik().ScriptRegistrar().DefaultGroup(group => group.Add("~/Scripts/gridFilter.js")) 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文