我正在编写一个jQuery插件,需要可以从插件内部和插件外部调用的函数。到目前为止,这是我的代码:
(function($){
$.fn.bxSlider = function(options){
var defaults = {
mode : 'horizontal',
speed : 500
}
var options = $.extend(defaults, options);
var base = this;
this.each(function(){
var someText = base.getText;
console.log(someText);
});
this.getText = function(){
return base.children().text();
}
return this;
}
})(jQuery);
当我从插件外部调用getText()时,它可以正常工作:
$(function(){
var slider = $('ul').bxSlider();
var text = slider.getText();
$('body').append(text);
});
但是当我尝试在插件中调用函数时,我得到一个“函数未定义”错误。我使用了错误的语法吗?
谢谢!
答案 0 :(得分:1)
您在之前将其称为,并将其添加到该jQuery对象中。
试试这个:
var base = this;
this.getText = function(){
return base.children().text();
}
this.each(function(){
var someText = base.getText;
console.log(someText);
});
答案 1 :(得分:0)
您似乎正在将方法getText
添加到每个实例上,并尝试在定义之前调用它。你可以:
this.each
和this.getText =
的顺序,以便先指定getText
getText
,以与分配bxSlider
相同的方式分配$.fn
。这样它就会出现在所有jQuery对象的原型上。如果在调用对象上的getText
之前调用bxSlider
,则可能需要构建一些逻辑来验证错误。