0

我正在使用一个插件,该插件通常具有以下代码:

(function ($) {

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

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

我如何_fnGetRowIDFromAttribute从外部插件调用,即在我的页面上?

4

2 回答 2

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 插件的即时函数中定义它。

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

于 2012-05-27T07:02:59.823 回答
1

如果要使其从外部访问,则需要替换此行:

function _fnGetRowIDFromAttribute(row) {

用这条线:

_fnGetRowIDFromAttribute = function(row) {

这在全局范围内添加了函数;您还可以在模块块之外定义函数。

于 2012-05-27T06:53:12.833 回答