похоже, я не могу найти решение для этого. Пожалуйста, помогите мне.
Я хочу сделать простой слайдер.
SO, так как вы можете видеть, что оранжевая часть - это мой ползунок громкости.
Это мой 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.
}
}
});
EDIT: для тех, кто хочет видеть мой HTML:
<div id="controlVolume">
<div id="volSlider">
<div id="volCaret"></div>
</div>
<div id="volText"></div>
</div>
Когда я пытаюсь перетащить курсор вверх, он просто переходит в "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, так как, вероятно, там что-то я не думал, и этот код терпит неудачу.
%
означает по модулю. Я думаю, вы хотите умножить?