Ric*_*ing 38 jquery jquery-ui jquery-ui-slider
我只能使用jQuery 1.4.2和jQuery ui 1.8.5(这不是选择,请不要让我升级到最新版本).我创建了一个滑块,显示滑动条上方的当前值,但我现在需要的是一种方法来填充滑块下方与滑块相同距离的图例(即如果滑块宽度为100px且有五个值滑块将每20px捕捉一次.在本例中,我希望图例中的值以20px间隔放置.
这是我想要的一个例子:

这是我的jQuery(从ui滑块演示页面吸收):
//select element with 5 - 20 options
var el = $('.select');
//add slider
var slider = $( '<div class="slider"></div>' ).insertAfter( el ).slider({
min: 1,
max: el.options.length,
range: 'min',
value: el.selectedIndex + 1,
slide: function( event, ui ) {
el.selectedIndex = ui.value - 1;
slider.find("a").text(el.options[el.selectedIndex].label);
},
stop: function() {
$(el).change();
}
});
slider.find("a").text(el.options[el.selectedIndex].label); //pre-populate value into slider handle.
Run Code Online (Sandbox Code Playgroud)
chr*_*gen 64
发布的解决方案是完全可行的,但这是另一个解决方案,不需要额外的插件,并产生这个(见小提琴):

这是怎么做的:
启动滑块.
对于每个可能的值,附加一个label元素position: absolute(滑块已经存在position: relative,因此标签将相对于滑块定位).
对于每个label,将left属性设置为百分比.
#slider label {
position: absolute;
width: 20px;
margin-top: 20px;
margin-left: -10px;
text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
// A slider with a step of 1
$("#slider").slider({
value: 4,
min: 1,
max: 7,
step: 1
})
.each(function() {
// Add labels to slider whose values
// are specified by min, max
// Get the options for this slider (specified above)
var opt = $(this).data().uiSlider.options;
// Get the number of possible values
var vals = opt.max - opt.min;
// Position the labels
for (var i = 0; i <= vals; i++) {
// Create a new element and position it with percentages
var el = $('<label>' + (i + opt.min) + '</label>').css('left', (i/vals*100) + '%');
// Add the element inside #slider
$("#slider").append(el);
}
});
Run Code Online (Sandbox Code Playgroud)
Ric*_*ing 21
要创建图例,我们需要知道滑块的宽度和元素的数量,然后将一个元素与另一个元素分开:
//store our select options in an array so we can call join(delimiter) on them
var options = [];
for each(var option in el.options)
{
options.push(option.label);
}
//how far apart each option label should appear
var width = slider.width() / (options.length - 1);
//after the slider create a containing div with p tags of a set width.
slider.after('<div class="ui-slider-legend"><p style="width:' + width + 'px;">' + options.join('</p><p style="width:' + width + 'px;">') +'</p></div>');
Run Code Online (Sandbox Code Playgroud)
p标签需要使用样式'display:inline-block'才能正确渲染,否则每个标签将占用一行,或者标签将彼此相邻堆叠.
我创建了一篇解释问题和解决方案的帖子:jQuery UI Slider Legend Under Slider,其中包含了这个工作的现场演示.
Dan*_*iel 12
一直在寻找相同的东西,最终使用了灯丝组的jQuery UI Slider(它的工作方式就像一个魅力,看起来很稳定)我认为及时计划将它合并到jQuery UI组件中......
这里是一篇文章和例子的参考文献+最小化的jsfiddle我做了
来自Select Element的jQuery UI Slider - 现在支持ARIA
这是Filament Group Lab Article的一个例子
顺便说一句,如果想要使用更简单的滑块(没有范围),则需要完成所有操作,即删除第二个select元素
另一个很好的插件可以完成这项工作:jslider
| 归档时间: |
|
| 查看次数: |
61763 次 |
| 最近记录: |