在jquery中由mousedown触发mouseup时停止一个事件

时间:2017-01-13 08:20:28

标签: javascript jquery events

我搜索了很多,但我找不到任何解决方案,或者可能是我无法找到问题的好关键字。 我正在研究音频播放器,问题是音量控制。 这是我的代码拖动功能只应在mousedown功能工作时发生,否则它不应该工作,但它不会在离开鼠标按钮时禁用onmousemove事件,所以我需要你的帮助..

$(document).ready(function(){
    $(".volume_wrapper_slider").on("mousedown", function(e) {
        $(this).on("mousemove", function(e) {
            isDragging = true;
            var slider_width = $(this).width();
                    var slider_offset = $(this).offset().left;
                    var percentage1 = (100 / slider_width);
                    var current_percentage = percentage1 * (e.clientX-slider_offset);           
                        // move the bar w.r.t click
                    $(".vol_slided").width(current_percentage+"%");
                    now_playing.volume = parseFloat(percentage1 * ($(".vol_slided").width()/100));
        });
    });
            // mouse up
    $(".volume_wrapper_slider").mouseup(function(e) {
        e.stopPropagation();
    });
});

更新-----------------------------

由于@ jaromanda-x

,这解决了我的问题
        // volume control

$(document).ready(function(){
        $(".volume_wrapper_slider").on("mousedown", function(e) {
            canDrag = true;
            $(this).on("mousemove", function(e) {
               if (canDrag == true) {
                 var slider_width = $(this).width();
                        var slider_offset = $(this).offset().left;
                        var percentage1 = (100 / slider_width);
                        var current_percentage = percentage1 * (e.clientX-slider_offset);

                            // move the bar w.r.t click
                        $(".vol_slided").width(current_percentage+"%");
                        now_playing.volume = parseFloat(percentage1 * ($(".vol_slided").width()/100));
               } 

            });
                // mouse up
        $(".volume_wrapper_slider").mouseup(function(e) {
            canDrag = false;
        });
    });
});

1 个答案:

答案 0 :(得分:0)

对我有用..

        // volume control

$(document).ready(function(){
        $(".volume_wrapper_slider").on("mousedown", function(e) {
            canDrag = true;
            $(this).on("mousemove", function(e) {
               if (canDrag == true) {
                 var slider_width = $(this).width();
                        var slider_offset = $(this).offset().left;
                        var percentage1 = (100 / slider_width);
                        var current_percentage = percentage1 * (e.clientX-slider_offset);

                            // move the bar w.r.t click
                        $(".vol_slided").width(current_percentage+"%");
                        now_playing.volume = parseFloat(percentage1 * ($(".vol_slided").width()/100));
               } 

            });
                // mouse up
        $(".volume_wrapper_slider").mouseup(function(e) {
            canDrag = false;
        });
    });
});