那么至此我们的jSlider插件就基本成型,向用户提供了一个可拖拽的slider。
【扩展】
有的时候用户却不是那么容易满足,于是有人高呼:“我要自己设置value,为什么不提供这个功能?”。
那么这时我们就需要为用户公开一个方法,用于设置jSlider的value,首先考虑的是作为方法需要一个作用对象(jSlider),那么此时我又不想将作用对象作为参数传入,那么我们还是将这个方法作为插件来开发,我们将方法命名为setSliderValue,开放2个参数,v(value值)和 callback(设置完成后的回调函数)。
即:$.fn.setSliderValue(v,callback);
ok,那么剩下的就是作用对象了,由之前的设计可知,在slider拖动时主要作用于2个对象,slider和completedbar,那么我们在jSlider插件末尾加上一段代码来返回slider对象:
slider.data = { bar: sliderbar, completed: completedbar };
return slider;
这样我们在初始化jSlider的时候就可以直接用一个变量来获取jSlider对象,然后调用setSliderValue方法了,伪码:
var slider = $.fn.jSlider({});
slider.setSliderValue(v,function(){});
setSliderValue代码:
try {
//validate
if (typeof v == ‘undefined’ || v < 0 || v > 1) {
throw new Error(‘’v’ must be a Float variable between 0 and 1.’);
}
var s = this;
//validate
if (typeof s == ‘undefined’ ||
typeof s.data == ‘undefined’ ||
typeof s.data.bar == ‘undefined’) {
throw new Error(‘You bound the method to an object that is not a slider!’);
}
$sliderProcess(s, s.data.completed, v * s.data.bar.width());
if (typeof callback != ‘undefined’) { callback(v); }
}
catch (e) {
alert(e.message);
}
这里同样调用了全局Function $sliderProcess在设置slider的value值时进行completedbar[width]和slider[left]的更新。由于此处进行了异常处理,所以如果end-user在确保setSliderValue被作用于jSlider对象的时候可以删除此异常处理代码。
【皮肤】
根据jSlider的API我们可以更加方便的为其设定皮肤,为了让jSlider更加专业,我们需要2张图片:

用来作为completedbar背景的’bar’和用来作为slider背景的’slider’,ok,我们更新下样式:
BlueSkin
/**//*—-blue skin—-*/
.bluebar
{}{
margin-top: 10px;
height: 4px;
background:#F7F7F7;
border:solid 1px #3e3e3e;
position: relative;
}
.bluebar .jquery-completed
{}{
height: 4px;
background:url(../images/slider/blue/bar.gif) left center no-repeat;
top: 0;
left:0;
position: absolute;










