19

最近リリースされたjQuery1.8(stable)が現在開発中のプロジェクトと互換性があるかどうかを確認しましたが、驚いたことに、これが最初に目にしたものです。

ここに画像の説明を入力してください

リリースポストによると、jQuery1.8と互換性のあるjQueryUI 1.8.22にすでにアップグレードしていたので、私は驚きました。

コールバック関数はそれに応じて呼び出されますが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>

JS

$('#foo').dialog({
    buttons: {
        Yes: function() { $(this).dialog('close'); },
        No: function() { $(this).dialog('close'); }
    }
});
4

1 に答える 1

18

編集:

これがBugTrackerチケットです。

より簡単な解決策は、jQueryライブラリを含めた後にこのスニペットを使用することです。

if ( $.attrFn ) { $.attrFn.text = true; }

jsFiddle

この問題は、jQueryUI1.8.23がリリースされたときに修正されるはずです。BugTrackerチケットページからのscott.gonzalezへのクレジット。

編集:これはUI1.8.23で修正されました。


私の古い解決策:(
上記のものに問題がある場合はそれを使用してください)

この問題を一時的に修正しました(UIまたはコアの新しい安定バージョンがリリースされるまで)。

jQuery1.8がjQueryUI1.8.22と相互作用するバグがあります。これは、 :内にテキストを作成する代わりに、親buttonの属性にテキストを格納します。texttextNodespan.ui-button-text

ここに画像の説明を入力してください

jQuery UIdialogまたはこの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にアップグレードするときに、UIボタンを忘れても無害です。

このバグに関するより良い解決策や情報があれば、喜んで受け入れます。=]

安定したリリースを待つことができず、最新の安定したバージョンを使用したい場合は、質問で述べたように、jQuery 1.7.2にダウングレードするか、UI1.9.0のプレリリースを使用できることに注意してください。

于 2012-08-10T19:56:33.030 に答える