2009-07-15 13 views
7

jqueryダイアログのボタンを削除するにはどうすればよいですか?例では、正しい新しいオプションで.dialogを再呼び出ししようとしましたが、ダイアログは影響を受けていないようです。jQuery UIダイアログ - ボタンを削除できません

$( '。selector')。ダイアログ( 'オプション'、 'ボタン'、{});実際の新しいボタンの文字列や関数が宣言されていても機能しません。

思考?

+1

さらにサンプルコードを投稿できますか? – juan

+0

http://jqueryui.com/demos/dialog/#option-buttons –

+0

これはうまくいきますが、構文がダイアログ({'option'、...})の場合は暗黙のうちに失敗します。 –

答えて

2

ダイアログのロード中にボタンを追加/設定できません。

0

現在はdestroyが必要です。その後、新しいオプションを使って新しいものを作ることができます。

EDIT(コメントへの応答): 私はあなたに何を伝えるべきかわかりません。私は自分のサイトとWFMで次のようにしました。

$('.selector').dialog('destroy'); 
$('.selector').dialog({ buttons: { "Ok": function() { $(this).dialog("close"); } } }); 
$('.selector').dialog('open'); 

あなたはdestroyが何をするかである、ボタンを変更する前のinit状態に戻す必要があります。たぶん、私はその踏み段ではっきりしていなかったかもしれません。

+0

ハイドを破壊する。もちろん、ダイアログを破棄してもう一度ビルドすることはできますが、jquery UIのドキュメントは、作成後のボタンを作成できると思っています。 –

+0

コメントを編集するには、ボタンを変更する前に初期化前の状態に戻る必要があります。 – geowa4

13

新しいボタンを間違った方法で渡しています。オプションはオブジェクトとして渡す必要があります。

これは動作します:

var options = { 
    buttons: {} 
}; 
$(selector).dialog('option', options); 

新しいダイアログを破壊して作成する必要はありません。あなたが望むなら

あなたもボタンを置き換えることができます。もちろん、

は、ボタンの新しいセットを持つオブジェクト:

var options = { 
    buttons: { 
     NewButton: function() { 
      $(this).dialog('close'); 
      // add code here 
     } 
    } 
}; 
$(selector).dialog('option', options); 
0

もう1つ、おそらくこれを行うための最も簡単で非常に柔軟な方法は、CSS経由です。 (最終的に将来必要な場合はどうすればいいですか...)

のように見える:あなたが唯一のいくつかのダイアログのためにそれをしたい場合は、ダイアログの初期化中にあなたがdialogClass:オプションを追加することができ、あなたのCSSが(例えば、あなたがdialogClassとしてmyDialogClassを追加したように見えます

.ui-dialog-titlebar-close{display:none} 

、全体のダイアログコンテナは、このクラスを経由してアクセスできるようになりますので!

.myDialog .ui-dialog-titlebar-close{display:none} 

幸運カスタマイジングで

4

FWIW、

$(".dialog").dialog("option", "buttons", null); 
関連する問題