2014-03-19 201 views
0

似乎我找不到解决方案。请帮助我。jQuery卷滑块

我想要做的是有一个简单的音量滑块。

enter image description here

所以,你可以看到橙色的部分是我的音量滑块。

这是我的jQuery:

var mouseDown = false; 

$("#volSlider").mousedown(function() { mouseDown = true; }); 
$("#volSlider").mouseup(function() { mouseDown = false; }); 
$("#volSlider").mouseleave(function() { mouseDown = false; }); 

$("#controlVolume").mousemove(function(e) 
{ 
    if (mouseDown == true) 
    { 
     var caretFromTop = $("#volCaret").position().top; 
     var areaHeight = $("#volSlider").height(); 
     var volume = (caretFromTop/areaHeight) * 100; 
     volume = Math.round(volume); 

     $("#volCaret").css("bottom", volume); 
     $("#volText").text(volume); 

     if (volume <= 100 && volume >= 0) 
     { 
      //To be added. 
     } 
    } 
}); 

编辑:对于那些谁希望看到我的HTML:

<div id="controlVolume"> 
    <div id="volSlider"> 
     <div id="volCaret"></div> 
    </div> 
    <div id="volText"></div> 
</div> 

当我尝试插入符号拖到顶部,它只是为“ 1“而不是进一步。我错过了什么?提前致谢。

+0

'%'表示模数。我想你想要繁殖? – eithed

+0

大起来MS油漆! – WheretheresaWill

+0

对不起,这是一个错字。它实际上是一个“*”,而不是“%” –

回答

1

你实际上想要做的是跟踪鼠标的Y顶点,而不是插入点的高度(从技术角度来说是 - 鼠标移动之间插入符号的高度)。您目前正在跟踪音量栏的位置,该位置不会更改。

这样你的代码应该是这样的:

var mousePos = 0; 
var mouseDown = false; 
var height = 0; 

$("#volSlider").mousedown(function(e) { mouseDown = true; mousePos = e.pageY; height = $("#volCaret").height(); }); 
$("#volSlider").mouseup(function() { mouseDown = false; mousePos = 0 }); 
$("#volSlider").mouseleave(function() { mouseDown = false; mousePos = 0 }); 

$("#controlVolume").mousemove(function(e) 
{ 
    if (mouseDown == true) 
    { 
     var areaHeight = $("#volSlider").height(); 
     var caretHeight = height + (e.pageY - mousePos); 
     $("#volCaret").height(caretHeight); 

     var volume = caretHeight/areaHeight * 100; 
     console.log(volume); 

    } 
}); 

这将是巨大的,如果你把你的代码上的jsfiddle,因为可能有一些我没有想到的,这代码可怕的失败。

+0

在jsFiddle上放置一个工作示例,需要我重做大部分内容才能使其工作,因为这是一个很大的项目。我试过了你的代码,它在某种意义上似乎起作用,但插入符号的高度发生了变化。它只会变成底部......这意味着它将从“volSlider”走出底部。没有ups。 –

+0

这里你去 - 工作jsfiddle:http://jsfiddle.net/8u3Ez/。如果你可以进一步解释你的问题。 – eithed

+0

这绝对是别的。工作很好。谢谢! –