Web・IT うんたらら

業務系とWeb系の狭間でIT業界を彷徨いながら備忘録と足跡を残していきます

【JavaScript】 IEでjQuery UI Dialog 内のDOM操作を行う時にハマったこと

これまたしょうもないことですが、ハマリにハマッたのでメモ。

jQuer UIを使ってdialogにしたDiv要素を、いったんcloseオプションで非表示にしてから

DOM操作すると、IEの場合上手く動きません。

removeChildしても消えなかったりappendChildしても増えたり増えなかったり……。


おそらく、close / open オプションで非表示 / 再表示をするのではなく、
destroyオプションとかで一旦ダイアログ要素を破棄して、再度あらたに宣言してやれば
問題なく動作するとは思うのですが、やっぱりなんとなく気持ちが悪いので色々と試したところ
以下のやり方で上手くいきました。


閉じるとき

$('#example').dialog('close');
$('#example').dialog('disable');

再表示するとき

$('#example').dialog('enable');
$('#example').dialog('open');


要するに、closeで非表示にした後に、disableオプションでいったんdialogを無効化して、
openで再表示する前にenableで再度有効にしてやる、というもの。


終わってみれば単純なことなんですが……。
IEのクロスブラウザ対応は本当に大変…。