首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止鼠标向上的单击事件和单击时的鼠标向上事件

问防止鼠标向上的单击事件和单击时的鼠标向上事件
EN

Stack Overflow用户
提问于 2021-09-29 05:21:47
回答 1查看 44关注 0票数 0

我已经创建了一个拖动栏,它将在拖动时增加和减少容器宽度,单击它将收缩/展开。但是每当我试图拖动它的时候,点击事件就会触发,拖拽条就会收缩。我正在使用backbone.js并使用下面的代码。

代码语言:javascript
复制
events: {
    'click .sideNavBar': 'toggleHeadersSection',
    'mousedown #dragBar': 'increaseDragBarWidth',
    'mouseup #dragBar': 'decreaseDragBarWidth',
    'click #dragBar': 'toggleHeadersSection',
},

increaseDragBarWidth: function (event){
    $(document).mousemove(function(event){
        $('.clinical-data-accordion').css("width",event.pageX+2);
    });

},

decreaseDragBarWidth: function (event){
    $(document).unbind('mousemove');
},
toggleHeadersSection: function(event){
       let clinicalDetailSection = this.$el.find("#clinicalDetailSection");
       let isHidden = $(clinicalDetailSection).hasClass('isHidden');
       this.displayHeadersSection(isHidden);
   
},
EN

回答 1

Stack Overflow用户

发布于 2021-09-29 06:01:18

这是一个包含一些图像的JSFiddle,您可以拖动并单击这些图像。(它是纯js)

通过检查鼠标按下事件和向上事件的时间差,可以将单击与拖动分开。

代码语言:javascript
复制
let timeDelta;

function startDrag(e) { // mouse up
    timeDelta = Date.now(); // get current millis
    ...

function stopDrag() { // mouse down
    if (typeof drag == "undefined") return;

    if (drag) {
        if (Date.now() - timeDelta > 150) { // we dragged
    ...

如果按住鼠标超过150ms,则不会将其计入单击。如果您将该检查添加到单击事件,则它应该可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69370800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档