jQuery使用時のIE対応色々

色々今回詰まったりしたのでmemo。
確認ブラウザは以下。
IE:7、8
FF:3.6
opera:10.63
safari:5.0.2

●DOMの表示・非表示方法
やり方2通りほどあるのでどっちかで出来なかったら方向転換する
1.style="display: none"付ける
これIEで成功しない時とかある。
なんでだろ…FF、safarioperaでは動くくせに。。。
ついでにコレも2通りやり方あったり。
$('dom').attr('style', 'display: none')

$('dom').css('display: none')
IEはattrの方じゃないと効かなかった。。。
全てのタグがそうかはわからないけど。

2.DOM生成・削除する
bindする必要無いならこっちの方がイイ。
イベントくっつける時はIEだとbindしても動いてくれないのでliveとか使わないとダメ。
動的にDOM作って、かつliveとか出来ないときどうするんだろうね…

●type="file"の表示をクリアする方法
コレもIEだけ動いてくれなくて困った。
普通なら
$('input[type=file]').val('');
とかやるけど、IEこれだとクリアしてくれない。。
なのでここでは生JS使用。
$('input[type=file]')[0].form.reset();
どうやらjQueryでform.resetって出来ない様子なので。。
ちなみにDojo使ってると普通にID指定の取得で出来る。
dojo.byId('file_id').value = "";
これ軽くハマったー。。。

(2011/4/20 追記)
●attrやcssについて。
display: noneを付ける方じゃなくて消す方で追記。
IE8だと↓こんなの効かなかったり。
$('target').attr('style', '');
IE7で動くのに…
ということでココだけは生JS使用しないとダメ。
jQuery使うなら↓こんな感じ?
$('target')[0].style.display = '';
普通にgetElementByIdの方が分かりやすいか…まぁいいや。