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

Fab*_*tté 19 jquery jquery-ui

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

在此输入图像描述

这对我来说是一个惊喜,因为我已经升级到jQuery UI 1.8.22,根据它的发布帖子,它与jQuery 1.8兼容.

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

在此输入图像描述

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

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

我错过了什么或这是一个真正的错误?

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

的jsfiddle

以及未来参考的代码:

HTML:

<div id="foo" title="Dialog title">Dialog text</div>
Run Code Online (Sandbox Code Playgroud)

JS:

$('#foo').dialog({
    buttons: {
        Yes: function() { $(this).dialog('close'); },
        No: function() { $(this).dialog('close'); }
    }
});
Run Code Online (Sandbox Code Playgroud)

Fab*_*tté 18

编辑:

这是BugTracker的门票.

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

if ( $.attrFn ) { $.attrFn.text = true; }
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

发布jQuery UI 1.8.23时应解决此问题.从BugTracker票证页面到scott.gonzalez的积分.

编辑:这已在UI 1.8.23中修复.


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

我已经为这个问题做了一个临时修复(直到发布一个新的稳定版本的UI或核心).

有与jQuery 1.8存储父文中的错误使用jQuery UI交互22年8月1日buttontext属性,而不是创建的textNode内部span.ui-button-text:

在此输入图像描述

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

//iterate through all UI button text spans in the document
$('.ui-button-text').each(function() {
    var $this = $(this);
    if ($this.text() == '') //if it has no text (bugged)
        $this.text($this.parent().attr('text')); //sets the text which was passed
});
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

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

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

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