【问题标题】:.mousedown() event not triggering on JScrollPane when clicking on the dragbar单击拖动条时,.mousedown() 事件未在 JScrollPane 上触发
【发布时间】:2013-07-30 18:28:35
【问题描述】:

当用户手动拖动它们时,我正在编写一个代码来将拖动捕捉到正确的位置。

我正在尝试使用 .onmousedown() 事件来获取当用户将鼠标放在拖动条上时的位置并比较 .onmouseup() 事件上的位置。

对于鼠标按下:

var dragBarPosBefore = 0;
$(document).mousedown(function () {   
  dragBarPosBefore = ($(".jspPane").position().left) * -1;;  
  console.log(dragBarPosBefore);
});

现在 mouseup:

var dragBarPos = 0;
$(document).mouseup(function () {
     dragBarPos = ($(".jspPane").position().left) * -1; 
     console.log(dragBarPos);
});

然后我比较它们。但是,当我单击拖动条时,只有 .mouseup() 函数起作用。只有当我点击 DRAGBAR 之外的任何其他位置时,mousedown 才有效。

有人知道原因以及如何解决这个问题吗? 非常感谢!

【问题讨论】:

    标签: jquery jscrollpane mousedown mouseup


    【解决方案1】:

    当您执行 $(document).mousedown 时,您将在整个文档上绑定一个事件。这就是为什么当您单击其他地方时触发事件的原因。这是你的意图吗?

    试试:

    $('#dragBar').mousedown(function ...)
    

    【讨论】:

    • 仍然无法正常工作.. 是的,这只是我对 mouseup 的意图,因为即使用户从 dragBar 上释放鼠标按钮,我也需要获取位置数据。但是鼠标按下不是必需的,因为它总是从拖动条开始。
    • 提醒:只有在鼠标按下 DRAGBAR 时才会出现此问题。文档的其余部分工作正常。检查控制台
    • 插件的initialiseHorizo​​ntalScroll函数劫持了拖动元素上的'mousedown'并返回false,从而阻止你的事件被触发。 github.com/vitch/jScrollPane/blob/master/script/…
    • 而且由于将事件添加到动态创建的元素的唯一方法是使用 $(document).on(event, element, function),我认为使用此插件是不可能的。 ..
    • 我认为如果我使用 event.preventDefault() 它将起作用,但我不知道如何使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2012-09-22
    • 2020-01-14
    相关资源
    最近更新 更多