【发布时间】:2017-11-21 15:12:38
【问题描述】:
我想在 Widget Factory 中创建一个自定义滑块插件,但它不起作用。为什么我不能使用我创建的 .option() 函数或 .setMyOptions() 自定义函数。我得到TypeError: <function> is not a function error。
我究竟做错了什么?我知道这是一些简单的语法调整,并且与作用域有关,但我不知道到底出了什么问题。
$.widget("custom.niceSlider", {
options: {
value:0
},
myOptions: {
handleWidth:'30px'
},
_create: function(){
this.element.addClass("niceSlider");
this._bar = $("<div class='bar' id='bar'></div>")
.appendTo(this.element);
this._handle = $("<div class='handle' id='handle'></div>")
.appendTo(this._bar)
.css("width", this.myOptions.handleWidth );
},
_destroy: function(){
},
_setOption: function( key, value ){
},
setMyOptions: function(key, value){
switch(key){
case 'handleWidth':
this.myOptions.handleWidth = value;
break;
}
}
});
$(document).ready(function(){
var slider = $("#slider").niceSlider();
slider.setMyOptions('handleWidth','50px');
});
【问题讨论】:
-
除非是匿名函数,否则函数必须先声明为
function。您正在使用setMyOptions: function(key,value)作为以一种奇怪的方式声明的半匿名函数。 -
请描述一下你是怎么称呼它的?我想你在做
$(selector).niceSlider("setMyOption", "handleWidth", 100); -
为什么不扩展滑块:
$.widget("custom.niceSlider", $.ui.slider, {});?
标签: jquery jquery-ui jquery-plugins widget jquery-ui-widget-factory