2011-12-01 21 views
1

如何正確調用插件本身的功能?例如,它的工作原理確定的,如果我這樣調用的函數,如何正確調用插件本身的功能

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); 

回答

1

$.fn擴展了jQuery插件庫。如果向對象(如$.fn.foo = function())添加函數,則可以將其稱爲$(elem).foo();,其中this對象引用elem的DOM對象。

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

在你的功能,你可以用它喜歡:

$("textarea").get_tinymce(); 
+0

啊感謝。但我仍然不明白爲什麼我不能像插件本身那樣調用函數'$ .fn.get_tinymce.init_tinymce()' - 任何想法?謝謝。 – laukok

+0

'get_tinemce'是一個對象,請參閱'init_tinymce'作爲一個類的私有函數,你不能調用,這是不可能的。如果您看到jQuery的創作頁面,您可以看到如何從對象外部調用函數。將方法名稱作爲字符串傳遞,插件將找出要調用的函數。查看頁面的「events」部分。 – Niels