我开发了一个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);
}
鼠标移动一段时间后停止被触发,而其他鼠标事件(例如mouseup
,mousedown
)似乎正常工作。
我在Chrome的DevTools中检查了事件绑定,它们似乎就在那里。不幸的是,我无法随机重现它。