別に大層なこと書くつもりはないけど、ハマったので一応。
どこのサイトでもそうなんだけど、Javascriptってページが読み込み終わったあとに
動くのが普通(よほど特別な処理をしてなければ)なんだけど、それは同時にページが
「読み込み終わった状態」のDOM要素に対して処理をかけるっていう意味になる。
つまり、たとえば

<div id="test1"></div><div id="test2"></div>

みたいなブロック要素があったとしてこれがページ読み込み終わったあとに

<script>
$(document).ready(function(){
  $('#test1').html('TEST1だよ');
  $('#test2').html('TEST2だよ');
  $('<div>').click(
         function(){  alert('押された!') }
      );
});
</script>

みたいに書き換える処理を入れると当然すぐに動く。

が、Ajax通信をしてデータを引っ張ってきたときに
<div>要素を追加すると・・・動かない!
別にどの要素でもそうなんだけど、ページが読み込み終わった後だと
ブラウザが要素のリストを把握していないから、イベントが発生しない。
CSSとかでマウスオーバーの処理をしているのはブラウザ側で判断してくれるから
別に問題はないが、scriptはダメみたい。

なのでどうしたのかっていうとDOM要素追加する際にイベントを追加した。

$('<div>').bind('click', function(){
    alert('TEST');
}).appendTo(hoge);

※hogeは追加する親要素


もちろんこれはサンプルなので実際はメソッド用意しておいてそいつを渡してやる。
bind();の詳細についてはJQueryの公式みてね。

簡単にDOMを変更できるが、反面というか気づきにくい点だと思うのでメモメモ。

ちなみに参考になった(というか理解しきれなかったけど)の挙げておくので
俺の嘘っぱち見るよりこっち見てくださいw

参考サイト:




手抜きな感じですがこんなところで。