(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();
我认为它应该有效,我收到错误,有什么问题?
答案 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)
您可以在插件声明中声明事件处理程序并从外部触发:
(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/