Knob.js-有没有一种方法可以连接表盘,使它们有一个组合的总数
Knob.js - Is there a way to link up dials so that they have a combined total?
我正在使用最新的jQuery Knob.js,想知道是否有一种方法可以连接3个表盘,使每个值在"更改"时发生变化,以使组合总数永远不会超过100%?
最初,所有3个刻度盘都设置为33%。如果用户改变了其中一个表盘,则另一个2应该增加或减少到总共等于100。
因为我喜欢这个想法,我刚刚创建了一个Fiddle:
$(function () {
$('.knob').knob({
readOnly: false,
'width': 150,
'height': 150,
'dynamicDraw': true,
'thickness': 0.4,
'tickColorizeValues': true,
'skin': 'tron',
displayInput: true,
change: function (value) {
var tKnobsVal = 0;
$(".knob").each(function () {
tKnobsVal += parseInt($(this).val());
});
var kDiff = tKnobsVal - 100;
adjustKnob(this.$.attr("id"), kDiff);
}
});
$('#btn').click(function () {
$({
value: $('.knob').val()
}).animate({
value: 33
}, {
duration: 700,
easing: 'swing',
progress: function () {
$('.knob').val(Math.round(this.value)).trigger('change');
}
});
});
});
function adjustKnob(id, value) {
var cValue = value / 2;
$(".knob").not("[id=" + id + "]").each(function () {
changeKnob($(this).attr("id"), cValue);
});
}
function changeKnob(id, value) {
$({
value: $("#" + id).val()
}).animate({
value: $("#" + id).val() - value
}, {
duration: 700,
easing: 'swing',
progress: function () {
$("#" + id).val(Math.round(this.value)).trigger('change');
}
});
}
在旋钮change
事件上,检索所有旋钮值的总和:
var tKnobsVal = 0;
$(".knob").each(function () {
tKnobsVal += parseInt($(this).val());
});
然后用值var kDiff = tKnobsVal - 100;
(与100的差值)和已更改的旋钮的id调用函数adjustKnob()
。adjustKnob()
然后为除用kDiff
的一半改变的旋钮之外的每个旋钮调用changeKnob()
在Fiddle中,我添加了一个按钮,将所有3个旋钮设置并重置为初始33。请注意,有一些微调缺失(有时所有旋钮的总和将略高于或低于100),但这可能是由例如所有旋钮的总数由于缺失1%而没有将100作为初始值引起的。
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 有可能在来自链接的警报中有一个值吗
- 是否<asp:文本框>有一个onFocusLost事件
- 让谷歌数据图表有一个24小时x轴
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- JQuery是否有一个“;移动“;作用或者有没有一种更紧凑的方法来做到这一点
- Regex或javascript每X个连续单词中有一个单词
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 将一个组合框值传递给其他组合框
- 是否有一个javascript库来解析简单的查询
- 为什么 var 组合 = null + “” 有一个值
- Knob.js-有没有一种方法可以连接表盘,使它们有一个组合的总数
- 强制extjs组合框至少有一个项目
- 是否有一种方法来放置一个树列在一个组合框
- ExtJS 4.1.x-内部有一个组合框的选择器