IE9 以下で jQuery 1.9.1 の html(val) が動作しない件
表題の通り、次のようなコードが動作しません。
var val = "<div>test</div>"; $("#hoge").html(val);
IE10 では正しく動作する事を確認したのですが手元の環境では IE9 以下ではすべて動作しませんでした。
とりあえずの対策としては html(val) を replaceWith(val) にすれば動作します。
var val = "<div>test</div>"; $("#hoge").replaceWith(val);
また empty() 及び append(val) の併用でも同じような動作を行う事ができます。
var val = "<div>test</div>"; $("#hoge").empty(); $("#hoge").append(val);
おそらく html(val) 内のみで使われている何らかの操作が IE9 以下に対応していないのだと思われますが、これに限らず特定バージョンの IE のみで動作しない関数については、何か他の方法で代用できないか試してみる他無さそうです。
追記:なぜ html(val) は動かないのか?
http://code.jquery.com/jquery-1.10.2.js
上記 jQuery のサイトで公開されている 1.10.2 のソースで確認した限りですが html(val) では innerHTML を利用して操作を行っています。どうやら IE にはこれを正しく処理できない不具合が存在するようなので、これを使っているのが原因ではないかと思われます。