带有jQuery 1.8的jQuery UI 1.8.22在对话框按钮中没有文本

时间:2012-08-10 18:58:57

标签: jquery jquery-ui

我去检查最近发布的jQuery 1.8(稳定版)是否与我当前正在开发的项目兼容,令我惊讶的是这是我看到的第一件事:

enter image description here

我很惊讶,因为我已经升级到jQuery UI 1.8.22,根据它的release post,它与jQuery 1.8兼容。

调用回调函数,但按钮没有textNode,因为可以在DOM检查器中看到:

enter image description here

到目前为止我找到的解决方案是:

  1. 降级回jQuery 1.7.2(我想在我的页面中使用最新的jQuery版本)
  2. 升级到jQuery UI 1.9.0pre(它不稳定)
  3. 使用open处理程序或手动编辑对话框的HTML以包含我想要的文本。对于源代码中的错误,似乎有很多不必要的麻烦。
  4. 我错过了什么或这是一个真正的错误吗?

    这是我用于演示的小提琴:

    jsFiddle

    以及未来参考的代码:

    HTML

    <div id="foo" title="Dialog title">Dialog text</div>
    

    JS

    $('#foo').dialog({
        buttons: {
            Yes: function() { $(this).dialog('close'); },
            No: function() { $(this).dialog('close'); }
        }
    });
    

1 个答案:

答案 0 :(得分:18)

修改

这是BugTracker ticket

更简单的解决方案是在包含jQuery库后使用此代码段:

if ( $.attrFn ) { $.attrFn.text = true; }

jsFiddle

当发布jQuery UI 1.8.23时,应解决此问题。从BugTracker票证页面获得scott.gonzalez的信用。

编辑:已在UI 1.8.23中修复此问题。


我的旧解决方案:
(如果您遇到上述问题,请使用它)

我已经针对此问题做了临时修复(直到发布了新的稳定版本的UI或核心版本)。

jQuery 1.8与jQuery UI 1.8.22交互时出现错误,该错误将文本存储在父button的{​​{1}}属性中,而不是在{{1}内创建text }}:

enter image description here

在初始化jQuery UI textNode或任何其他具有此UI按钮错误的界面后使用此代码段:

span.ui-button-text

jsFiddle

脚本在执行任何操作之前检查UI按钮是否没有文本,因此即使您在升级到未来的非bug版本的核心/ UI时忘记了它也是无害的。

如果您有更好的解决方案或有关此错误的信息,我会很高兴接受它。 dialog

请注意,如果您不能等待稳定版本并且仍想使用最新的稳定版本,则可以降级到jQuery 1.7.2或使用问题中提到的UI 1.9.0的预发行版。 / p>