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

jQuery UI 1.8.22 with jQuery 1.8 doesn't have text in dialog buttons

提问人:Fabrício Matté 提问时间:8/11/2012 最后编辑:CommunityFabrício Matté 更新时间:11/28/2013 访问量:2815

问:

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

enter image description here

这让我感到惊讶,因为我已经升级到了jQuery UI 1.8.22,根据其发布帖子,它与jQuery 1.8兼容。

回调函数称为 according,但按钮没有 s,正如在 DOM 检查器中看到的那样:textNode

enter image description here

到目前为止,我发现的解决方案是:

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

是我遗漏了什么,还是这是一个实际的错误?

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

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

评论

0赞 j08691 8/11/2012
控制台中没有错误,切换回 1.7.2 时工作正常。错误?
0赞 Fabrício Matté 8/11/2012
@j08691 没错。我会向他们的错误跟踪器提交报告,但我没有这方面的经验,我想确保它实际上是一个错误。尽管很明显,但我倾向于忽略简单的事情。
0赞 j08691 8/11/2012
我今天看到一些关于这个问题的事情。可能想环顾四周,然后提交报告。
0赞 Fabrício Matté 8/11/2012
感谢您的提醒,它只是关于对话框按钮还是包括 UI 的其他部分?
1赞 Fabrício Matté 8/11/2012
@TimWithers我正在使用 Microsoft 的 CDN 加载 jQuery UI 1.8.22。我也尝试过jQuery CDN。您可以在左侧面板的“管理资源”部分看到这些文件。

答:

18赞 Fabrício Matté 8/11/2012 #1

编辑:

这是 BugTracker 票证

一个更简单的解决方案是在包含 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 交互时存在一个错误,该错误将文本存储在父属性中,而不是在 :buttontexttextNodespan.ui-button-text

enter image description here

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

//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 按钮是否没有文本,因此即使您在升级到将来的无错误版本的核心/UI 时将其遗忘在那里,保留它也是无害的。

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

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

评论

0赞 Fabrício Matté 8/11/2012
@j08691是的,下次我应该先浏览他们的 BugTracker。 希望这将是一个很好的参考,直到他们发布一个新的稳定版本(UI 1.8.23 应该修复此问题)。:P
0赞 BLSully 8/17/2012
今天也遇到了这个问题。也中断了按钮选项的 [] 语法。感谢您的好问答
1赞 0xC0DEGURU 11/28/2013
你的帖子很有帮助!谢谢你:)