Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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_Function_Object_Prototype - Fatal编程技术网

Javascript 如何在对象内调用特定函数?

Javascript 如何在对象内调用特定函数?,javascript,jquery,function,object,prototype,Javascript,Jquery,Function,Object,Prototype,这是我的javascript的一部分,取自jquery插件。 这个插件让我可以制作一个包含加载了远程html内容的div小部件,以及一个带有刷新按钮的工具头,用于重新加载远程内容。 我需要调用一个_loadAjaxFile函数来从这个插件之外的其他函数(例如按钮)重新加载内容,但我无法理解这是否可能以及如何实现 (function ($, window, document, undefined) { function Plugin(element, options) {

这是我的javascript的一部分,取自jquery插件。 这个插件让我可以制作一个包含加载了远程html内容的div小部件,以及一个带有刷新按钮的工具头,用于重新加载远程内容。 我需要调用一个_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);
(函数($,窗口,文档,未定义){
函数插件(元素、选项){
this.obj=$(元素);
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:函数(awidget、文件、加载器){
var self=这个;
awidget.find(“.widget body”)
.load(文件、函数(响应、状态、xhr){
var$this=$(this);
如果(状态=“错误”){
$this.html(“”+self.o.labelError+“”+
xhr.status+“”+xhr.statusText+“”);
}
如果(状态=“成功”){
var aPalceholder=awidget.find(self.o.timestampholder);
if(aPalceholder.length){
html(self._getPastTimestamp(newDate());
}
if(self.o.afterLoad的类型=='function'){
self.o.afterLoad.call(this,awidget);
}
}
self=null;
});
此._runLoaderWidget(加载器);
},
}
})(jQuery、窗口、文档);
这是插件的完整代码


上面的
\uu
是作者告诉你不要直接给它打电话。这并不意味着你不能,但你不应该。您将使用不打算直接使用的内部构件


我假设您所引用的内容不完整,但该函数位于Plugin.prototype上这一事实意味着您可以在Plugin实例上调用它。如何获得插件实例来调用它(以及是否可以)取决于插件(查看其文档);它可能永远不会直接向您的代码公开实例,而只是通过它添加到
jQuery.fn

中的名称来提供其功能。它上面的
\ucode>是作者告诉您不要直接调用它。这并不意味着你不能,但你不应该。您将使用不打算直接使用的内部构件



我假设您所引用的内容不完整,但该函数位于Plugin.prototype上这一事实意味着您可以在Plugin实例上调用它。如何获得插件实例来调用它(以及是否可以)取决于插件(查看其文档);它可能永远不会直接向您的代码公开实例,而只是通过它添加到
jQuery.fn

的名称提供其功能。您应该能够使用
插件调用它。_loadAjaxFile()
,因为_loadAjaxFile只是插件原型上的一个方法。@FranCarstens
插件
不在全局范围内,它是IIFE的本地版本。@FranCarstens-而且它在任何情况下都不在
插件上;这是在Plugin.prototype上。很抱歉,我误读了。请告诉我们您是如何在代码中使用该插件的。还有,这是完整的代码吗?它似乎缺少了
init
方法。您应该能够使用
插件调用它。_loadAjaxFile()
,因为_loadAjaxFile只是插件原型上的一个方法。@FranCarstens
插件
不在全局范围内,它是IIFE的局部。@FranCarstens-而且它在任何情况下都不在
插件上;这是在Plugin.prototype上。很抱歉,我误读了。请告诉我们您是如何在代码中使用该插件的。还有,这是完整的代码吗?看起来它缺少了
init
方法,完全正确,但这么多的猜测可能会解决这个问题:-)@Bergi-有时我觉得它既适合回答问题,也适合VTC。上面唯一的猜测是很明显的:OP漏掉了很多插件代码。不幸的是,没有关于插件的文档。@danny36-结合您引用的代码,我觉得您想找到另一个插件或编写自己的东西。但是如果你继续使用这个,你必须研究它的来源,看看是否有办法访问一个实例。完全正确,但这么多的猜测可能会让问题结束:-)@Bergi-有时我觉得它对答案和VTC都合适。上面唯一的猜测是很明显的:OP漏掉了很多插件代码。不幸的是,没有关于插件的文档。@danny36-结合您引用的代码,我觉得您想找到另一个插件或编写自己的东西。但是如果您继续使用这个,您必须研究它的源代码,看看是否有方法访问实例。