提问人:Fabrício Matté 提问时间:8/11/2012 最后编辑:CommunityFabrício Matté 更新时间:11/28/2013 访问量:2815
带有 jQuery 1.8 的 jQuery UI 1.8.22 对话框按钮中没有文本
jQuery UI 1.8.22 with jQuery 1.8 doesn't have text in dialog buttons
问:
我去检查最近发布的jQuery 1.8(稳定版)是否与我当前正在开发的项目兼容,令我惊讶的是,这是我看到的第一件事:
这让我感到惊讶,因为我已经升级到了jQuery UI 1.8.22,根据其发布帖子,它与jQuery 1.8兼容。
回调函数称为 according,但按钮没有 s,正如在 DOM 检查器中看到的那样:textNode
到目前为止,我发现的解决方案是:
- 降级回jQuery 1.7.2(我想在我的页面中使用最新的jQuery版本)
- 升级到 jQuery UI 1.9.0pre(不稳定)
- 使用处理程序或手动编辑对话框的 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'); }
}
});
答:
编辑:
这是 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 交互时存在一个错误,该错误将文本存储在父属性中,而不是在 :button
text
textNode
span.ui-button-text
在初始化 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 的预发行版,如问题中所述。
评论
:P
评论