javascript - Jquery slider 附加鼠标事件

标签 javascript jquery html jquery-ui

我正在使用jquery slider ,它在chrome浏览器中工作正常,但是当我在firefox中运行相同的代码时,鼠标会附加一个事件,当我移动无论向左或向右然后它会自动滑动滚动。

所以我希望它的功能像 Chrome 一样。任何人 1 请帮助我如何停止 firefox

的悬停效果

我正在使用 jquery-min.jsjquery-ui.js 的 samve 版本,即 1.11.1jquery-ui.css 版本 1.9.1

非常感谢任何人的想法或评论

我在下面粘贴完整的代码并设置 fiddle link

<html>
<head>

   <title>slider problem</title>

  <link href="https://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" rel="stylesheet" />
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <script src="https://code.jquery.com/ui/1.11.1/jquery-ui.js"></script>

</head>
<body>

<div id="" class="span12 sliderSpecific ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" aria-disabled="false">    <a class="ui-slider-handle ui-state-default ui-corner-all" href="#" tabindex="-1" style="left: 0%;"></a></div>
<script type="text/javascript">

  $(document).ready(function(){

    $('.sliderSpecific').slider({
      animate: true,
      range: "min",
      step: parseInt(50),
      slide: function( event, ui ) {
        alert(' slider is slide here');
      }
    });
  });

</script>
</body>
</html>

最佳答案

我能够重新创建该问题,但这不是错误。它是与 mouseup 事件的处理方式相关的浏览器特定行为。实际上 IE (edge) 的行为与 Firefox 相同。 Chrome 似乎是异常(exception),但您仍然可以在 chrome 中模拟相同的行为。我还没有测试过 Safari 或任何其他浏览器。这归结为 slide 函数在 mousedown 上触发。您已将该功能定义为发出警报。通常发生的情况(我猜)是,在警报打开后,您将手指从鼠标按钮上移开,然后再次单击“确定”按钮。这会导致警报的消息框处理 mouseup 事件。 Chrome 恰好处理得很好,允许父窗口(主浏览器窗口)接收 mouseup 事件。显然 Firefox 和 IE 没有。因此,页面仍然认为鼠标按钮已按下,并认为您在关闭警报后仍在尝试使用 slider 。

我认为我可以预测你可以在 chrome 中模拟这个事实,这证明我理解这个问题。在chrome中模拟的方法是点击 slider 并开始拖动它,但是当警报打开时,不要释放鼠标按钮,而是使用空格键“单击确定按钮”。警报关闭后,仍然按住鼠标按钮,从左向右移动,您将看到与 Firefox 中相同的结果。您正在手动模拟 Firefox 处理鼠标状态的方式。

那么如何解决这个问题呢?删除警报,或将警报设置为超时,这将允许在警报消息框吞噬它之前处理 mouseup 事件...

$(document).ready(function(){

    // This block isn't necessary, just adding for completion in my example 
    var cnt = 0; // keeping a count for unique messages
    // just adding a container for non-blocking output messages
    $('body').append('<div id="output"></div>');
    // End unnecessary block ----------------------------------------------

    $('.sliderSpecific').slider({
      animate: true,
      range: "min",
      step: parseInt(50),
      slide: function( event, ui ) {
        // Causes unexpected behavior in IE/Firefox 
        //alert(' slider is slide here'); 

        // Non-blocking output option...
        console.log(' slider is slide here');  
        // Another non-blocking output option...
        $('div#output').html(' slider is slide here (' + (cnt++).toString() + ')');

        // Workaround for using blocking output (alert/confirm)
        setTimeout(function() {
            alert('yay, on a delay works!');
        }, 0);
      }
    });

});

关于javascript - Jquery slider 附加鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32196543/

相关文章:

javascript - Node.js 的多个菜单

php - 在下拉框中进行选择后显示文本值

javascript - 如何更改 DOM 元素?

javascript - 刷新带有 &lt;script&gt; 标签的 div

html - 如何强制 !important 来自父元素?

javascript - 如何让结果打印 "computer wins"或 "user wins"

javascript - toUpperCase() 没有使字符串大写

javascript - 指令未以 Angular 显示

javascript - 从 ajax 发送的数据为 null 到 MVC Controller

css - 容器 DIV 在调整大小时拉伸(stretch)但在滚动时不拉伸(stretch)