headタグに要素を追加できない。

JavaScriptでheadタグの中にscriptタグを追加しようとしたのですが、jQueryを使うとなぜか上手くいかないみたいです。


こんな感じでscript要素を作って

var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "unko.js");


jQueryのappendメソッドでheadタグに追加したのですが、なぜか追加されません。

$("head").append(script); // ダメ


jQueryを使わずに追加したら上手くいきました。

document.getElementsByTagName("head")[0].appendChild(script); // できた


なんでー?

実験したソース

<html>
<head>
</head>
<body>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
  <script type="text/javascript">
    $(function(){
      // scriptを作る
      var make_script = function(url){
        var script = document.createElement("script");
        script.setAttribute("type", "text/javascript");
        script.setAttribute("src", url);
        return script;
      };
      var plain_js = make_script("plain.js");
      var jquery_js = make_script("jquery.js");

      $("head").append(jquery_js);
      document.getElementsByTagName("head")[0].appendChild(plain_js);

      var headHTML = document.getElementsByTagName("head")[0].innerHTML;
      puts(headHTML);

      function puts(str){
        var text = document.createTextNode(str);
        document.body.appendChild(text);
        var br = document.createElement("br");
        document.body.appendChild(br);
      }
    });
  </script>
</body>
</html>

追記

下のページを読んで謎がとけました。
jQueryのappend,prepend,before,afterメソッドにscriptタグを含んだDOM要素なり文字列なりを渡したときは、script以外の部分はちゃんと追加されますが、scriptタグの部分は追加されずに、スクリプトがその場で実行(eval)されてしまうのだそうです。

anything from here jQuery の挙動を解読する(32):jQuery.clean() メソッド解読──jQuery解読(49)

firebugで見てもheadタグに変化はないけど、scriptはちゃんと実行されているから心配しなくてもいいよ。ということみたいです。ほんとうにありがとうございました。