jQuery 检测连续的鼠标按下

标签 jquery

有没有办法检测连续的鼠标按下?换句话说,我希望一个函数在按下鼠标左键时继续运行。这是我正在尝试做的一个例子。我有一个控制scrollLeft 位置的按钮。每次点击它都会增加 20,但我希望它在按住鼠标按钮并停止 onmouseup 时继续增加。

与按住鼠标按钮时滚动条上的箭头的工作方式类似

    var wrapperDiv = $("#wrapper-div");
    var scrollWidth = 0;

    $("#right-button").click(function() {
      if(scrollWidth < wrapperDiv[0].scrollWidth) {
        scrollWidth = scrollWidth+20;
        wrapperDiv.scrollLeft(scrollWidth);
      }

});

最佳答案

不要使用点击处理程序。使用两个单独的处理程序,一个用于 mousedown和一个 mouseup .

var $wrapper = $('#wrapper');

function startScrolling()
{
    // contintually increase scroll position
    $wrapper.animate({scrollLeft: '+=20'}, startScrolling);
}

function stopScrolling()
{
    // stop increasing scroll position
    $wrapper.stop();
}

$('#right-button').mousedown(startScrolling).mouseup(stopScrolling);

演示:http://jsfiddle.net/mattball/dkWGy/

关于jQuery 检测连续的鼠标按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216333/

相关文章:

jquery - 单击打开的菜单时,菜单内容仅显示 50% 的时间

javascript - Bootstrap collapse.in 需要点击两次才能隐藏侧边栏

javascript - ajax 中生成的 anchor 链接不起作用

javascript - 为什么 jQuery 不删除所有数据属性?

javascript - 在 switch 语句中使用复选框

javascript - 如何在代码编辑器中打印 fatal error ?

javascript - jQuery 在两个 ID 之间切换

javascript - 访问通过 wrap 函数添加的父项

javascript - 在 Javascript 中,当当前文本框已满时,如何自动将光标移动到下一个文本框?

javascript - 主干 View 在没有指定预定义 el 的情况下不呈现