詳しい条件とかは忘れたけど、ieのなんかのバージョンでjQueryを使ったとき $("<p>") のようなコードで要素を作れないと聞いたので確かめてみました。 個人のページのネタなのでie10だけチェック。 試したコードはこんな感じ。
<html> <head> <title>test</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> <!-- $( function() { $("body").append( $("<p>").text("test") ); } ); //--> </script> </head> <body> </body> </html>
jQueryのバージョンが上がったから大丈夫なのかieのバージョンが10だから大丈夫なのかは分からないけど、普通に動きますね。
ダメだってのは何のページで聞いた情報でしたっけ? と思ってそれっぽいキーワードで検索してみるとまぁ出るは出るは、ieは嫌われるべくして嫌われてるんだなぁ。
とりあえず、旧バージョンのieでも動くコードにするには、 $("<p>") のように書かずに $(document.createElement("a")) のように書かなければならないよう(未検証)です。
- 参考サイト1 : 雑想空間 ... jQueryがIEでうごかねぇーーー、って思ったので、メモっとく。
そういう関数を作っておいた方がいいかな? (もちろん未検証)
function $C(element_name) { return $(document.createElement(element_name) ); }
使うときはこんな感じで。
$("body").append(
$C("p").text("test") ← $("<p>").text("test")
);
え~と...
- 参考サイト2 : キョウダケダカンナー ... jQueryでDOM要素を生成するときに、第二引数でclass名つけるとIE6でエラーが出るって話
ie6の対応とか、やめちゃいましょう。 大手サイトも対応してないの結構あるし。
もちろん、公共のサイト作っている人は対応しなきゃダメだし、動作チェックも必要ですよ? タイヘンダナァ~。