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 にはこれを正しく処理できない不具合が存在するようなので、これを使っているのが原因ではないかと思われます。