我正在使用一个插件,通常代码类似于:
(function ($) {
$.fn.makeEditable = function (options) {
function _fnGetRowIDFromAttribute(row) {
return "foo";
}
return this.each(function () {
//some code
});
};
})(jQuery);
如何从外部插件(即我的页面)调用_fnGetRowIDFromAttribute
?
答案 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) {
这增加了全局范围内的功能;您还可以在模块块外定义函数。