2013-05-28 73 views
1

在滑动时,我想显示最大值和当前值之间的差异。
如果差值为0,淡入“nodiff”div并在里面显示“no diff”文本(隐藏“diff div”),否则在淡出的“diff”div中显示“diff of difference value”。JQuery UI最小和最大差异

2件事。

1)从var difference...行它似乎不正确?
2)我怎样才能在申报单褪色(见下文评论)

我尝试:

$("#slider-range-min").slider({ 
      value: 0, 
      min: 0, 
      max: 5, 
      step: 1, 
slide: function(event, ui) { 
$("#current").html(ui.value); 
var min = $("#slider-range-min").slider("option", "min"); 
var max = $("#slider-range-min").slider("option", "max"); 
var difference = max.value - min.value; 
if (difference => 1) $("#diff").html("diff of " + difference); // fade out #nodiff and fade in #diff? 
if (difference = 0) $("#nodiff").html("no diff"); // fade out #diff and fade in #nodiff? 
} 
}); 
+0

你为什么直接检查'ui.value'而不是'difference'呢?而且,'html()'设置内容并且不会改变可见性。在同一个元素上设置'html()'或者用show()/ hide()'切换可见性。 – Christoph

+0

已更新。仍然不想工作,以显示差异:( – Dave

回答

1

maxmin选项返回的数值不是一个对象,所以你必须访问变量minmax变量直接没有value属性。

要检查优质使用==而不是=

像:

$("#slider-range-min").slider({ 
    value: 0, 
    min: 0, 
    max: 5, 
    step: 1, 
    slide: function (event, ui) { 
     $("#current").html(ui.value); 
     var min = $("#slider-range-min").slider("option", "min"); 
     var max = $("#slider-range-min").slider("option", "max"); 
     debugger; 
     var difference = max - ui.value; 
     $("#diff").html(''); 
     if (difference > 0) $("#diff").html("diff of " + difference); // fade out #nodiff and fade in #diff? 
     $("#nodiff").html(''); 
     if (difference == 0) $("#nodiff").html("no diff"); // fade out #diff and fade in #nodiff? 
    } 
}); 

这里是工作提琴:http://jsfiddle.net/IrvinDominin/LsePU/

+0

完美!!谢谢@爱德华。在diff/nodiff divs中褪色怎么办? – Dave

1

1)(difference = 0)是赋值,你想有一个比较:(difference == 0)

2)最小和最大始终是相同的 - 05因此差异总是相同的:5

3)maxmin有没有财产.value - 该行应为:

var difference = max - min; 

4)你想哪个值进行比较? minvaluemaxvalue?因此改变你的线路:

var difference = max - ui.value; 

HTML:

<div id="slider-range-min"></div>  
<div id="diff"></div> 

JS: 正确的代码是(Example):

$("#slider-range-min").slider({ 
      value: 0, 
      min: 0, 
      max: 5, 
      step: 1, 
slide: function(event, ui) { 
    $("#current").html(ui.value); 
     var min = $("#slider-range-min").slider("option", "min"); 
     var max = $("#slider-range-min").slider("option", "max"); 
     var difference = max - ui.value; 
     $("#diff").html(difference?"diff of " + difference : "no diff"); 
    } 
}); 

我只用一个差异,所以你不” t需要淡入/淡出任何差异,只需改变#diff div的内容即可。

+0

该死的==完全忘了!谢谢:) – Dave

+0

@Dave我修改了你的代码,你只需要一个div - 不需要褪色。如果他们帮助了你,也可以上传爱德华和我的答案。干杯。 – Christoph

+0

你100%正确。感谢和upvoted! – Dave