在某些情况下,鼠标事件在一段时间后开始被忽略

时间:2015-12-05 11:01:49

标签: jquery javascript-events

我开发了一个jQuery插件,它有一个' reset'基本上删除某些DOM元素的函数,应用一些CSS并恢复原始DOM元素(我应用插件的那个)状态。

具体来说,重置(我认为是问题的根源)确实:

  • 删除DOM元素......

    $(selector).remove();
    
  • 替换元素的类(但我使用元素的ID来重新初始化实际上没有问题的元素)

    $(selector).className = existingClasses; # existing classes is set on first plugin init()
    
  • 通过

    取消绑定鼠标事件(命名空间 --defined)
    $('body').off('.rbMouseEventHandler')
    $('#otherElement').off('.rbMouseEventHandler')    
    
  • 替换原始DOM元素
    var object = $(initialState.selector)
    object.html(initialState);
    
  • 恢复元素的原始样式(假设没有为其定义内联样式)

    object.attr('style', '');
    

然而,这会导致事件出现问题,尤其是mousemove(桌面版Chrome和Android版)。 我注意到这只在重置后才会发生。

特别是它发生在:

    $('body').on('mousemove mouseup mousedown', function(evt){
        console.log(evt.type);
    }

鼠标移动一段时间后停止被触发,而其他鼠标事件(例如mouseupmousedown)似乎正常工作。

我在Chrome的DevTools中检查了事件绑定,它们似乎就在那里。不幸的是,我无法随机重现它。

0 个答案:

没有答案