【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のクロスブラウザ対応は本当に大変…。