微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我检查了最近发布的jQuery 1.8(stable)是否与我目前的开发项目兼容,令我惊讶的是,这是我看到的第一件事:

这对我来说是一个惊喜,因为我已经升级到jQuery UI 1.8.22,根据它的release post,与jQuery 1.8兼容。

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

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

>降级回到jQuery 1.7.2(我想在我的页面中使用最新的jQuery版本)
>升级到jQuery UI 1.9.0pre(不稳定)
>使用打开的处理程序或手动编辑对话框的HTML以包含我想要的文本。似乎有很多不必要的麻烦,因为他们的来源的错误

我错过了什么,还是一个实际的错误

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

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

在初始化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按钮是否没有文字,所以即使您在升级到未来的未被验证的核心/ UI版本时,也可以保留即使您忘记了它。

如果你有一个更好的解决方案或这个bug的信息我很乐意接受它。 =]

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

原文地址:https://www.jb51.cc/jquery/182656.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐