防止鼠标事件多次触发

时间:2018-05-23 18:33:37

标签: javascript php jquery ajax

我之前已经阅读了几个关于类似问题的问题,并且已经认为我已经收集了通过多个DOM项目传播的问题,但是我仍然发现我的Ajax被多次触发当释放我的jquery滑块后,mouseup甚至触发。

我尝试过的代码如下。任何人都可以看到任何明显的东西,并解释为什么我所包含的传播声明不起作用?我已在多个地方尝试了e.stopPropagation();行。

        $('#slider-range').mousedown(function(e) {

                $('#slider-range').one('mouseup', function() {
                        e.stopPropagation();        
                    $("#"+pupil).css("visibility","hidden");
                    $( "img[name='save"+pupil+"']" ).show();


                                $.ajax(
                                {
                                    type: "POST", 
                                    url: "readingAgeAjax.php",
                                    data: (
                                    {
                                        "type": "saveReadingAge",
                                        "readingAge": $('#hiddenSpan'+pupil).html(),
                                        "pupilID": pupil
                                    }), 

                                    success: function(response)
                                    {   
                                        $( "img[name='save"+pupil+"']" ).hide();                
                                    }
                                });




                        });
                     return false;
                });

2 个答案:

答案 0 :(得分:0)

目前尚不清楚如何使用滑块。你基本上表示你想这样做:



colnames(model$loadings) <- c("FactorA", "FactorB")
fa.diagram(model)
&#13;
$(function() {
  $('#slider-range').mousedown(function(e) {
    var myEvent = e;
    console.log("mousedown", myEvent);
    $('#slider-range').one('mouseup', function(e) {
      myEvent.stopPropagation();
      console.log("mouseup", e);
    });
    return false;
  });
});
&#13;
&#13;
&#13;

这表示您希望在<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="slidecontainer"> <input type="range" min="1" max="100" value="50" class="slider" id="slider-range"> </div>事件期间停止mousedown事件。不确定这会有什么帮助。

由于您需要通过AJAX发送和接收数据,我会等到用户完成幻灯片事件,然后通过AJAX发送值。因此,要么寻找幻灯片停止,更改或鼠标,然后发送数据。

&#13;
&#13;
mouseup
&#13;
$(function() {
  $('#slider-range').on("mousedown mouseup", function(e) {
    console.log(e);
    if (e.type == "mouseup") {
      console.log($(this).val());
    }
  });
});
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

我认为您错过了在函数参数

中添加e
  

$('#slider-range')。one('mouseup',function(e){

同时检查控制台是否有错误