高级JavaScript调用函数内的插件函数

时间:2012-12-02 22:18:31

标签: javascript jquery

 (function($) {
     $.fn.extend({
     clock: function(options) {
     var options = $.extend(defaults, options);
        .......
        .......
        return this.each(function() {
         var prev = function() {
                console.log("hello world!");
            alert('getweather');
            };
            $('#left').click(function() {alert(342);});

      });
})(jQuery); 

如何从代码

中调用插件函数prev和$('#left')
 $.fn.clock().prev(); //doesn't work

 $.fn.clock('#left');   //doesn't work

提前致谢

2 个答案:

答案 0 :(得分:0)

根据提供的代码,您不能。是不可能的。该函数被分配给局部变量prev,该变量不会以任何方式暴露在本地范围之外。

如果你想让它可以访问,你需要将函数存储在某个地方,这样它就不会超出范围,然后提供一些接口,通常是通过$('my-element').clock('prev')之类的东西。 jQuery Plugin Authoring解释了这方面的最佳做法,特别是在Plugin Methods下。

答案 1 :(得分:0)

这些是anonymous个函数。即使它们在您的范围内,您也无法打电话给它们。

解决方法是在click上触发#left事件:

$('#left').trigger('click');