我如何在插件中调用此函数?

时间:2012-05-27 05:59:16

标签: javascript jquery plugins

我正在使用一个插件,通常代码类似于:

(function ($) {

    $.fn.makeEditable = function (options) {
        function _fnGetRowIDFromAttribute(row) {
            return "foo";
        }

         return this.each(function () {
             //some code
        });
    };
})(jQuery);

如何从外部插件(即我的页面)调用_fnGetRowIDFromAttribute

2 个答案:

答案 0 :(得分:2)

如果你想让你的函数可以从全局范围访问并遵守jQuery约定,你应该把它附加到jQuery对象中。

(function ($) {
    $._fnGetRowIDFromAttribute = function(row) {
        return "foo";
    }

    $.fn.makeEditable = function (options) {
         return this.each(function () {
             //some code
        });
    };
})(jQuery);

或者您可以将其放在命名空间中:

(function ($) {
    $.myModule = $.myModule || {};
    $.myModule._fnGetRowIDFromAttribute = function(row) {
        return "foo";
    }

    $.fn.makeEditable = function (options) {
         return this.each(function () {
             //some code
        });
    };
})(jQuery);

另一个评论:如果你的函数没有使用$ .fn.makeEditable范围内的任何东西,那么没有理由在每次调用$ .fn.makeEditable时重新定义它。您可以在用于指定jQuery插件的立即函数中定义它。

最后但并非最不重要的是,变量或名称 以下划线 开头的函数是一种传统的方式来判断它是 私有 ,不应该从外面调用。所以你应该考虑更改它的名字。

答案 1 :(得分:1)

如果您想从外部访问它,则需要替换此行:

function _fnGetRowIDFromAttribute(row) {

这一行:

_fnGetRowIDFromAttribute = function(row) {

这增加了全局范围内的功能;您还可以在模块块外定义函数。