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

标签 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 以包含我想要的文本。源代码中的错误似乎带来了很多不必要的麻烦。

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

这是我用于演示的 fiddle :

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'); }
    }
});

最佳答案

编辑:

这是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 交互时存在一个错误,该错误将文本存储在父 buttontext 属性中,而不是创建 textNode span.ui-button-text 内的:

enter image description here

在初始化 jQuery UI 对话框或任何其他具有此 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
});

jsFiddle

该脚本在执行任何操作之前都会检查 UI 按钮是否没有文本,因此即使您在升级到 future 无 bug 的 core/UI 版本时忘记了它,保留它也无害。

如果您有更好的解决方案或有关此错误的信息,我很乐意接受。 =]

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

关于带有 jQ​​uery 1.8 的 jQuery UI 1.8.22 对话框按钮中没有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907661/

相关文章:

javascript - jQuery:意外的 token 非法

jquery - 哪里可以下载 CSS coverflow?

jQuery UI 组合框最大宽度选项

javascript - JQuery UI 选项卡未正确显示 - Internet Explorer

jQuery draggable 在页面滚动后在错误的位置显示助手

javascript - jQuery Animate 不适用于背景颜色属性

jQuery - 确定用户事件与编程事件

jquery - 我可以将 Nuget 保留在 jQuery 1.9.x/1.x 路径上(而不是升级到 2.x)吗?

php - 使用 jQuery 在 PHP/HTML 中输出相关的嵌套表

jquery - 值得使用 Google 托管的 jQuery UI 吗?