如何在jquery插件中调用函数?

时间:2012-11-25 07:48:09

标签: javascript jquery html

(function($) { 
    $.fn.top_islides = function(){
        var ajax_init = function(){
            init_islides();
            setTimeout(function(){picmove()},300);
        };
//.....
    };  
})(jQuery);

在另一个文件中准备好文档

$('#top_slides').top_islides();
$('#top_slides').top_islides().ajax_init();

我认为它应该有效,我收到错误,有什么问题?

4 个答案:

答案 0 :(得分:5)

这样做:

(function($) {
    //Assuming $.fn.top_islides is defined
    $.fn.top_islides.ajax_init = function(){
        init_islides();
        setTimeout(picmove,300);
    };
 //.....
})(jQuery);

或者

(function($) { 
    $.fn.top_islides = function(){
        var ajax_init = function(){
            init_islides();
            setTimeout(picmove,300);
        };
        return {
            ajax_init: ajax_init
        };
    });
     //.....
})(jQuery);

答案 1 :(得分:3)

尝试类似下面的示例: -

<script type="text/javascript">


    $.someplugin = {
      CallMe : function() {
            alert("You called?");
        },
      otherstuff : function() { alert("other stuff!"); }
    };


    $.someplugin.CallMe();
    $.someplugin.otherstuff();
</script>

答案 2 :(得分:0)

在函数中使用var时,它会使元素“私有”。这是一种在Javascript工作中实现可见性的hacky方式,而真正的类结构不适用于Javascript。 您需要将其设置为函数的原型或返回对象

(function($) { 
  $.fn.top_islides = function(){
    var ajax_init = function(){
        init_islides();
        setTimeout(function(){picmove()},300);
    };
    return {
      'ajax_init': ajax_init
    };
  //.....
  };  
 })(jQuery);

(function($) { 
  $.fn.top_islides = function(){
  //.....
  };
  $.fn.top_islides.prototype.ajax_init = function(){
    init_islides();
    setTimeout(function(){picmove()},300);
  }
 })(jQuery);

但是在你的情况下,你不会使用原型,因为你没有实例化一个新的top_islides对象,而是通过jQuery访问,所以第一个选项是你最好的选择。

答案 3 :(得分:0)

Imo,最好的解决方案是使用触发器,它更干净,因为你可以保留可链接的插件系统。

您可以在插件声明中声明事件处理程序并从外部触发:

(function($) { 
  $.fn.top_islides = function(){
    this.on ('init_islides', function(){
        setTimeout(function(){picmove()},300);
    };
  //.....
  };  
 })(jQuery);
$( "button" ).click(function () {
  $( "p" ).trigger( "init_islides");
});

DOC可在此处找到:http://api.jquery.com/on/