这是我的Javascript的一部分,来自jQuery插件。 这个插件让我制作了一个div部件,其中加载了远程html内容,并带有一个带有刷新按钮的工具标题,用于重新加载远程内容。 我需要调用_loadAjaxFile函数来从该插件之外的其他函数(例如按钮)中重新加载内容,但是我无法理解这是否可行以及如何实现。
(function ($, window, document, undefined) {
function Plugin(element, options) {
this.obj = $(element);
this.o = $.extend({}, $.fn[pluginName].defaults, options);
this.objId = this.obj.attr('id');
this.pwCtrls = '.jarviswidget-ctrls';
this.widget = this.obj.find(this.o.widgets);
this.toggleClass = this.o.toggleClass.split('|');
this.editClass = this.o.editClass.split('|');
this.fullscreenClass = this.o.fullscreenClass.split('|');
this.customClass = this.o.customClass.split('|');
this.storage = {enabled: this.o.localStorage};
this.initialized = false;
this.init();
}
Plugin.prototype = {
_loadAjaxFile: function (awidget, file, loader) {
var self = this;
awidget.find('.widget-body')
.load(file, function (response, status, xhr) {
var $this = $(this);
if (status == "error") {
$this.html('<h4 class="alert alert-danger">' + self.o.labelError + '<b> ' +
xhr.status + " " + xhr.statusText + '</b></h4>');
}
if (status == "success") {
var aPalceholder = awidget.find(self.o.timestampPlaceholder);
if (aPalceholder.length) {
aPalceholder.html(self._getPastTimestamp(new Date()));
}
if (typeof self.o.afterLoad == 'function') {
self.o.afterLoad.call(this, awidget);
}
}
self = null;
});
this._runLoaderWidget(loader);
},
}
})(jQuery, window, document);
这是插件的完整代码
答案 0 :(得分:3)
作者_
告诉您不要直接调用它。这并不意味着您不能,但您不应该。您将使用不应该直接使用的内部构件。
我假设您引用的内容不完整,但是该功能在Plugin.prototype
上的事实意味着您可以在插件 instances 上调用它。如何获得插件实例以调用它(以及是否可以)取决于插件(请参见其文档)。它可能永远不会直接向您的代码公开实例,而只是通过添加到jQuery.fn
的名称来使其功能可用。