- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
是否可以使用 JQuery slider (范围 slider /双 slider )来获得非线性(不一致的“步长”大小)值?
我想让水平 Slider 看起来像:
|----|----|----|----|----|--------|--------|-------------------------|--------------------------|...
0 500 750 1000 1250 1500 2000 2500 75000 100000...
例如,我想要以下 JQuery 代码:
var values = [0, 500, 750, 1000, 1250, 1500, 2000, 2500, 75000, 100000, 150000, 200000, 250000, 300000, 350000, 400000, 500000, 1000000];
var slider = $("#price-range").slider({
orientation: 'horizontal',
range: true,
min: 0,
max: 1000000,
values: [0, 1000000],
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));
$("#price-amount").html('$' + ui.values[0] + ' - $' + ui.values[1]);
return false;
},
change: function(event, ui) {
getHomeListings();
}
});
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;
}
上面的代码并不能正常工作,但是对齐网格功能不起作用。
最佳答案
不确定您是否希望 slider 比例与您的值成比例*但如果是这样,我为提出相同问题的其他人提供了解决方案。 You can find my solution here .基本上,我利用在您移动 slider 时触发的 slide
事件来模拟步进,但基于定义步进的自定义数组。这样它只允许您“步进”到您的预定义值,即使它们分布不均。
*换句话说,如果您希望 slider 看起来像这样:
|----|----|----|----|----|----|----|
0 10 20 100 1000 2000 10000 20000
然后使用此处的其他解决方案之一,但如果您希望 slider 看起来像这样(图表未按比例):
|--|--|-------|-----------|-----------|--------------------|--------------------|
0 10 20 100 1000 2000 10000 20000
那么我链接到的解决方案可能更符合您的需求。
编辑:好的,这个版本的脚本应该可以使用双 slider :
$(function() {
var values = [0, 500, 750, 1000, 1250, 1500, 2000, 2500, 75000, 100000, 150000, 200000, 250000, 300000, 350000, 400000, 500000, 1000000];
var slider = $("#price-range").slider({
orientation: 'horizontal',
range: true,
min: 0,
max: 1000000,
values: [0, 1000000],
slide: function(event, ui) {
var includeLeft = event.keyCode != $.ui.keyCode.RIGHT;
var includeRight = event.keyCode != $.ui.keyCode.LEFT;
var value = findNearest(includeLeft, includeRight, ui.value);
if (ui.value == ui.values[0]) {
slider.slider('values', 0, value);
}
else {
slider.slider('values', 1, value);
}
$("#price-amount").html('$' + slider.slider('values', 0) + ' - $' + slider.slider('values', 1));
return false;
},
change: function(event, ui) {
getHomeListings();
}
});
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;
}
});
请注意,它在最左端看起来有点滑稽,因为与右手端相比,跳跃靠得太近了,但是如果您使用键盘箭头移动 slider ,您可以看到它按需要步进。解决这个问题的唯一方法是改变规模,使其不那么急剧地呈指数级增长。
编辑 2:好的,如果在使用真实值时间距太夸张,则可以为 slider 使用一组假值,然后在需要使用真实值时查找对应的真实值(类似于这里建议的其他解决方案是什么)。这是代码:
$(function() {
var trueValues = [0, 500, 750, 1000, 1250, 1500, 2000, 2500, 75000, 100000, 150000, 200000, 250000, 300000, 350000, 400000, 500000, 1000000];
var values = [0, 1, 2, 3, 4, 5, 6, 7, 10, 15, 20, 25, 30, 40, 50, 60, 75, 100];
var slider = $("#price-range").slider({
orientation: 'horizontal',
range: true,
min: 0,
max: 100,
values: [0, 100],
slide: function(event, ui) {
var includeLeft = event.keyCode != $.ui.keyCode.RIGHT;
var includeRight = event.keyCode != $.ui.keyCode.LEFT;
var value = findNearest(includeLeft, includeRight, ui.value);
if (ui.value == ui.values[0]) {
slider.slider('values', 0, value);
}
else {
slider.slider('values', 1, value);
}
$("#price-amount").html('$' + getRealValue(slider.slider('values', 0)) + ' - $' + getRealValue(slider.slider('values', 1)));
return false;
},
change: function(event, ui) {
getHomeListings();
}
});
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;
}
function getRealValue(sliderValue) {
for (var i = 0; i < values.length; i++) {
if (values[i] >= sliderValue) {
return trueValues[i];
}
}
return 0;
}
});
您可以摆弄values
数组(代表 slider 停止点)中的数字,直到您将它们按照您想要的方式隔开。通过这种方式,从用户的 Angular 来看,您可以感觉到它与值成比例地滑动,但又不会那么夸张。显然,如果您的真实值是动态创建的,您可能需要想出一种算法来生成 slider 值,而不是静态定义它们...
关于javascript - JQuery Slider,如何改变 "step"大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/967372/
在我用 OpenCascade 生成的 STEP 文件中,我可以看到: #58 = VERTEX_POINT('',#59); #59 = CARTESIAN_POINT('',(-0.5,-0.5,
这个问题在这里已经有了答案: How to use Firebug's debugger functions? (1 个回答) 关闭 8 年前。 我是 FireBug 调试器的新手,谁能告诉我什么是
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我想知道 Eclipse IDE 中是否存在任何功能,可以在执行 selenium 脚本 时“从步骤进行调试” “单步执行”、“单步执行”。 “QTP” 和大多数专有功能自动化工具中都提供此功能。我假
我正在寻找 .stp/.step 文件的某种规范、文档、解释等。 更多的是关于每行包含哪些信息而不是一般信息。 我似乎无法自己弄清楚每个值的含义。 有谁知道一些关于 STEP 文件的好读物? 我已经搜
我写了下面的代码: Mockup TOPdesk
我正在尝试研究 java String 类中的方法如何工作,因此我创建了一些调用该 String 类方法的自定义代码。 如您所见,我在自己的代码中设置了一个断点,并且在 java String 类源代
我有某些功能,需要我进行一个 api 调用来检索第二个 api 调用中使用的某个 id,逻辑上它看起来像这样: componentWillMount () { this.props.functio
在本地使用 AppEngine(即使用 dev_appserver.py)时,是否可以进行逐步调试?使用 logging.info() 或类似的函数来显示代码中所有变量的值并确定错误的位置是一种过时的
我正在使用 JQuery Steps,它非常好。但事实证明有些事情很棘手。 假设我在第 2 步。根据我在表单中选择的内容,我可能想在单击“下一步”时直接跳到第 4 步,并且进一步禁用第 3 步 anc
我已经包含了 jquery-steps 插件。 如何更改按钮文本? 现在它说“完成”我想把它改成“去” 谢谢 最佳答案 查看以下内容 link .您可以在初始化时更改所有标签。 var setting
在(现已弃用的) Angular 场景测试运行器中,有一个选项可以创建一个 runner.html 页面,该页面将在 iFrame 中运行测试,同时在主页中逐步报告进度。 有没有办法获得类似的 Pro
我有使用标签 的 primefaces 步骤像下面这样: 结果是这样的: 我可以点击步骤 1,但不能点击步骤 3 和 4。如何为所有步骤启用点击? 最佳答案 哇,
给定一个使用分区的 Spring Batch 作业,是否可以有多个分区步骤? 例如: 在上面的示例中,是否可以将另一个分区
假设您要从数据库中获取一条记录,该记录返回大量数据并且需要多次连接。 所以我的问题是,使用单个查询来检查数据是否存在并在存在时获取结果是否更好?或者做一个更简单的查询,检查数据是否存在然后id记录是否
我如何创建一个具有整数输入类型而不是字符串的任务,例如我想启动一个状态机: "SomeStage": { "Comment": "Getting busy
我还没有看到有人问过这个问题——尽管我确实阅读了大约 100 个关于类似主题的 jQuery 步骤——似乎没有一个能解决我的问题。 我正在使用 jQuery-steps 并希望在第一步完成后添加一个“
我想知道是否可以在 Laravel 5.3 中逐个迁移。 我无法使 --step 选项正常工作,文档仅提及此选项与 rollback 或 refresh 一起使用命令。 // this works p
我已按照 AWS 文档中的步骤在本地设置和运行 AWS Step Functions:https://docs.aws.amazon.com/step-functions/latest/dg/sfn-
我已按照 AWS 文档中的步骤在本地设置和运行 AWS Step Functions:https://docs.aws.amazon.com/step-functions/latest/dg/sfn-
我是一名优秀的程序员,十分优秀!