Jquery plugins jQWidgets拆分器小部件导致焦点丢失或事件消耗

Jquery plugins jQWidgets拆分器小部件导致焦点丢失或事件消耗,jquery-plugins,jquery-events,Jquery Plugins,Jquery Events,我正在使用拆分器,并且在启用拆分器时遇到一些奇怪的行为。当它被禁用时,这种奇怪的行为就会停止。我创造了一个-这是我能得到的最简单的 要重新创建问题,请执行以下操作: 加载JSFIDLE,在执行任何操作之前,将鼠标悬停在Submit上 按钮或“字符串”选项卡 提交按钮应更改为红色颜色,并显示“字符串” 选项卡也会更改样式 接下来,在一些空白处单击,例如,在Submit下面 按钮或“字符串”选项卡 现在,将鼠标移到按钮或选项卡上-样式不再为更改 要么 如果在某个空白处再次单击,则鼠标悬停,样式 确实

我正在使用拆分器,并且在启用拆分器时遇到一些奇怪的行为。当它被禁用时,这种奇怪的行为就会停止。我创造了一个-这是我能得到的最简单的

要重新创建问题,请执行以下操作:

  • 加载JSFIDLE,在执行任何操作之前,将鼠标悬停在Submit上 按钮或“字符串”选项卡
  • 提交按钮应更改为红色
    颜色
    ,并显示“字符串” 选项卡也会更改样式
  • 接下来,在一些空白处单击,例如,在Submit下面 按钮或“字符串”选项卡
  • 现在,将鼠标移到按钮或选项卡上-样式不再为更改 要么
  • 如果在某个空白处再次单击,则鼠标悬停,样式 确实发生了变化
  • 这是而不是类似切换的行为,因为第三次单击不会阻止鼠标上方的样式设置。它只发生在第一次

    如果我注释掉设置拆分器的行:

    $('#splitter').jqxSplitter(splitterConf);
    
    然后问题就消失了。
    splitter
    div之外的任何HTML元素都不会遇到此问题

    我唯一的想法是事件正在被拆分器消耗,而不是传播。然而,
    splitter
    div没有附加任何事件,至少它们不会显示在Chrome的JavaScript调试器中

    我注意到,当单击空格(触发问题)时,一个额外的
    div
    元素被附加到DOM中:

    此元素在以下代码中被
    jqxsplitter.js
    追加:

    initOverlay: function(c) {
                var b = this;
                if (b.overlay && c == undefined) {
                    b.overlay.remove()
                } else {
                    b.overlay = a("<div></div>");
                    b.overlay.width(b.host.width());
                    b.overlay.height(b.host.height());
                    b.overlay.css("position", "absolute");
                    b.overlay.appendTo(a(document.body));
                    var d = b.host.offset();
                    b.overlay.css("left", d.left);
                    b.overlay.css("top", d.top)
                }
    
    但我不知道为什么会发生这种情况,或者为什么会引起问题。理想情况下,有人知道问题是什么,但如果不能做到这一点,一些关于如何调试/走向解决方案的提示将是很好的

    来自团队

    这是一个已知问题,将在下一版本中解决

    Src:

    _stopDrag: function(b) {
            if (b._capturedElement) {
                b._performAreaResize();
                b._capturedElement.remove()
            }
            b._capturedElement = null;
            b._initOverlay()