【问题标题】:How to call the function inside the plugin itself correctly如何正确调用插件内部的函数
【发布时间】:2011-12-01 15:21:50
【问题描述】:

如何正确调用插件内部的函数?例如,如果我这样调用函数,它就可以正常工作,

init_tinymce();

但是如果我这样调用函数,我会得到一个错误,上面写着$.fn.get_tinyMCE.init_tinymce is not a function

$.fn.get_tinymce.init_tinymce();

下面是简化的代码,

(function($){ 
   $.fn.extend({         
       get_tinymce: function () {
            var $cm = this.ready(function(e){
                if (tinyMCE.activeEditor != null || tinyMCE.activeEditor != undefined) {
                    //console.log(tinyMCE.activeEditor);
                    for (var i = 0; i < tinyMCE.editors.length; i++) {
                        tinyMCE.remove(tinyMCE.editors[i]);
                    }

                    setTimeout(function () {
                        //load_mce_basic();
                    }, 1000);
                } 
                else {
                    $.fn.get_tinymce.init_tinymce();
                    //init_tinymce();
                }           
            });         

            function init_tinymce(){ 
                alert('2');
            };

            $.fn.get_tinymce.init_tinymce = function() {
                alert('1');
            };
        }
    });
})(jQuery);

【问题讨论】:

    标签: jquery plugins jquery-plugins


    【解决方案1】:

    $.fn 扩展了 jQuery 插件库。如果你给$.fn对象添加一个函数,比如$.fn.foo = function(),你可以像$(elem).foo();一样调用它,其中this对象指的是elem的DOM对象。

    更多信息:http://docs.jquery.com/Plugins/Authoring

    在你的函数上,你可以像这样使用它:

    $("textarea").get_tinymce();
    

    【讨论】:

    • 是的,谢谢。但我仍然不明白为什么我不能像$.fn.get_tinymce.init_tinymce() 那样调用插件本身内部的函数 - 有什么想法吗?谢谢。
    • get_tinemce 是一个对象,将init_tinymce 视为您不想调用的类的私有函数,这是不可能的。如果您从 jQuery 中看到 Authoring 页面,您可以看到如何从对象外部调用函数。将方法名称作为字符串传递,插件将找出调用哪个函数。请参阅页面的events 部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    相关资源
    最近更新 更多