我发现了两个出色的 jquery 插件,用于为 Web 表单生成滑块,它们在不支持 javascript 的浏览器中很好地降级,关闭了样式等.
I have found two excellent jquery plugins for generating a slider for a web form, which degrade nicely in browsers that do not support javascript have styles turned off etc.
首先是Jquery.UI版本:http://ui.jquery.com/演示/滑块/#steps
The first is the Jquery.UI version : http://ui.jquery.com/demos/slider/#steps
第二个是滑块的选择元素:http://www.filamentgroup.com/lab/update_jquery_ui_16_slider_from_a_select_element/
The second is a select element to slider : http://www.filamentgroup.com/lab/update_jquery_ui_16_slider_from_a_select_element/
但是我需要创建一个不只是将滑块分成相等部分的滑块.
However I need to create a slider that doesn't just divide the slider up in equal parts.
例如,假设我有以下数字范围:
For example let's say I have the following range of numbers:
800,1000,1100,1200,1300,1400,1500
800,1000,1100,1200,1300,1400,1500
我希望滑块在 800 和 1000 之间有一个很好的大间隙,然后在 1100-1500 之间有一个较小的间隙
I'd like the slider to have a nice big gap between 800 and 1000 then smaller gaps between 1100-1500
所以滑块看起来有点像这样:
So the slider would look a little like this:
800----1000--1100--1200--1300--1400--1500
800----1000--1100--1200--1300--1400--1500
最好我希望它降级为下拉菜单,所以问题是有没有人知道支持此功能的插件或对实现此功能的最佳方法有任何建议,自定义 filamentgroup 插件滚动我自己的等等.
Preferably I'd like it to degrade to a drop down, so the question is does anyone know of a plugin that supports this or has any recommendations for the best way of achieving this, customise the filamentgroup plugin roll my own etc.
更新: 一直在研究灯丝组的滑块,它还是通过 JQuery UI 的滑块实现了句柄.所以看起来修改 JQuery.UI 它的自身是唯一可用的选项.将在代码中挖掘,看看我是否能找到需要更改的必要位.如果在此期间有人有任何想法!!!
Update: Been hacking about with filament group's slider and it implements the handles via JQuery UI's slider anyway. So it looks like modding JQuery.UI its self is the only option available. Will dig about in the code to see if I can find the requisite bit that needs changing. If in the meantime anyone has any ideas!!!
您可以使用 jquery 的滑块通过挂钩到幻灯片事件(有效地覆盖它)来做到这一点......像这样:
You could do it using jquery's slider by hooking into the slide event (effectively overriding it)... Something like this:
$(function() {
var values = [0, 10, 50, 60, 70, 80, 90, 91, 92, 93, 94, 95, 100];
var slider = $("#slider").slider({
slide: function(event, ui) {
var includeLeft = event.keyCode != $.ui.keyCode.RIGHT;
var includeRight = event.keyCode != $.ui.keyCode.LEFT;
slider.slider('option', 'value', findNearest(includeLeft, includeRight, ui.value));
return false;
}
});
function findNearest(includeLeft, includeRight, value) {
var nearest = null;
var diff = null;
for (var i = 0; i < values.length; i++) {
if ((includeLeft && values[i] <= value) || (includeRight && values[i] >= value)) {
var newDiff = Math.abs(value - values[i]);
if (diff == null || newDiff < diff) {
nearest = values[i];
diff = newDiff;
}
}
}
return nearest;
}
});
应该适用于您所描述的...我已经测试了它是否可以用鼠标拖动 &使用左/右/home/end 键(如果你想要一个垂直滑块,显然你需要将左/右更改为上/下).
Should work for what you describe... I've tested it for dragging with the mouse & using left/right/home/end keys (obviously you'd need to change the left/right to up/down if you want a vertical slider).
一些注意事项:
希望对您有所帮助.
这篇关于是否有使用非等分值的 jquery 滑块的插件或示例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!