Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我如何调用插件中的这个函数?_Javascript_Jquery_Plugins - Fatal编程技术网

Javascript 我如何调用插件中的这个函数?

Javascript 我如何调用插件中的这个函数?,javascript,jquery,plugins,Javascript,Jquery,Plugins,我正在使用一个插件,其代码大致如下: (function ($) { $.fn.makeEditable = function (options) { function _fnGetRowIDFromAttribute(row) { return "foo"; } return this.each(function () { //some code }); };

我正在使用一个插件,其代码大致如下:

(function ($) {

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

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

如何从外部插件(即在我的页面上)调用
\u fGetRowIDFromAttribute

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

function _fnGetRowIDFromAttribute(row) {
_fnGetRowIDFromAttribute = function(row) {
这一行:

function _fnGetRowIDFromAttribute(row) {
_fnGetRowIDFromAttribute = function(row) {

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

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

function _fnGetRowIDFromAttribute(row) {
_fnGetRowIDFromAttribute = function(row) {
这一行:

function _fnGetRowIDFromAttribute(row) {
_fnGetRowIDFromAttribute = function(row) {

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

如果您希望从全局范围访问函数并遵守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插件的即时函数中定义它


最后但并非最不重要的一点是,一个名为的变量或函数以下划线开头,这是一种常规的方式,用来判断它是私有的,不应从外部调用。因此,您应该考虑更改它的名称。

< P>如果您想让您的函数从全局范围访问并尊重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插件的即时函数中定义它


最后但并非最不重要的一点是,一个名为的变量或函数以下划线开头,这是一种常规的方式,用来判断它是私有的,不应从外部调用。所以你应该考虑改变它的名称。

你不能,这就是使它成为插件的一部分——它是封装的,而不是函数的公共返回值的一部分。那么有什么解决办法吗?我有插件代码。如何使其成为公共调用的一部分?在全局范围内复制该函数。复制粘贴作业。你不能,这就是让它成为插件的一部分的目的——它是封装的,而不是函数的公共返回值的一部分。那么有什么解决方法吗?我有插件代码。如何使其成为公共调用的一部分?在全局范围内复制该函数。复制粘贴作业。