【问题标题】:jQuery UI -- buttonset buttons don't always work on first clickjQuery UI -- buttonset 按钮并不总是在第一次点击时起作用
【发布时间】:2013-05-14 18:59:49
【问题描述】:

我正在使用一个 jQuery UI 按钮集(基于几个单选按钮。)一切都很好,除了有时当您单击其中一个按钮时没有任何反应(就像您根本没有单击它一样)。我想这可能是我的实现有问题,所以我去了演示站点:

http://jqueryui.com/demos/button/#radio

并花了一些时间在不同的选择之间来回切换。我有同样的问题!随机点击会被忽略!

我偶然发现了这个网站:

http://www.filamentgroup.com/lab/styling_buttons_and_toolbars_with_the_jquery_ui_css_framework/

推出了他们自己的版本,我无法复制相同的问题。这让我相信 jQuery UI 实现存在一些小问题?

有人看过吗?我花了一些时间试图找到其他有同样问题的人,但没有发现任何提及。有没有其他人看到同样的问题?

【问题讨论】:

    标签: jquery jquery-ui


    【解决方案1】:

    这也发生在我身上。

    我认为问题在于单击按钮时您必须保持鼠标不动,否则它将不起作用。

    例如,尝试在以缓慢而稳定的速度移动鼠标的同时单击按钮。除非鼠标几乎没有移动,否则该按钮将不起作用。也可以尝试拖动按钮,即使只是一个像素,然后释放。

    您遇到的有效网站似乎使用mousedown 来避免此问题。他们还使用旧版本的 jQuery UI,这可能是一个因素。

    【讨论】:

    • 这里也一样,太可怕了!这上面有 jquery 的 bug 吗?
    • @NadirMuzaffar 我认为这是捕获细节的更好的错误请求:bugs.jqueryui.com/ticket/7665
    【解决方案2】:
     $( "#radio" ).buttonset();
     $( "#radio" ).find("label").unbind("mouseup");
    

    因为在jquery源代码中有:

    .bind( "mouseup" + this.eventNamespace, function( event ) {
      if ( options.disabled ) {return; }
      if ( startXPos !== event.pageX || startYPos !== event.pageY ) {
                        clickDragged = true;
       }
    }
    

    【讨论】:

    • 我尝试了这个解决方法 - 它有效:当我在单击时移动鼠标时,按钮状态仍然切换。谢谢!
    • 这适用于 Chrome 和 IE,但在阅读上面发布的链接时,我注意到 link 中的一条评论特别与 Firefox 的行为有关。在测试中,我发现取消绑定的工作似乎在 Firefox 中产生了奇怪和不利的影响。
    • 不幸的是,在 Firefox 上,所有这些都造成了它工作的错觉(输入图形更改但不触发更改事件)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    相关资源
    最近更新 更多