2011-12-18 13 views
2

私は以下のようにajaxを使用しようとしています。jQuery ajax、応答テキストから再度呼び出す方法

jqueryのコード:

$("a.generate").click(function(){ 
    $.ajax({ 
     data: {tag: $(this).html()}, 
     success: function(data){ 
      $("#terms div.content").html(data); 
     } 
    }); 
}); 

Iから呼び出すリンク:

:呼び出しの後

<a href="#" class="generate"> tag </a> 

、アヤックスは、私は以下のように再び呼び出すことができるリンクをロードします

<a href="#" class="generate"> term </a> <a href="#" class="generate"> term2 </a> 

問題は、ajaxがロードされたデータからリンクをクリックすると、ajaxはそれ以上ロードされません。

編集:

私は以下のように()メソッドを使用してコードを編集した後、コードは何もしません:

解決
$("body").on('click', 'a.generate', function(){ 
    $.ajax({ 
     data: {tag: $(this).html()}, 
     success: function(data){ 
      $("#terms div.content").html(data); 
     } 
    }); 
}); 

jqueryのバージョンを、私は頭のタグを追加しました1.6.2、私はバージョンを更新した、今問題なし。再度、感謝します。 http://api.jquery.com/live/

編集:アダムは私の最初のリンクは廃止された、言ったように代わりhttp://api.jquery.com/on/に使用

答えて

4

onを使用してイベントハンドラを追加してください。

$(document).on("click", "a", function(){ 
}); 

これはこれまでクリックされたすべてのアンカーを結び付けます。より選択的であることが、ちょうど第二パラメータにセレクタに渡す

$(document).on("click", "a.someClass", function(){ 
}); 

におけるイベントのlive -a共通提案jQueryの-さを廃止予定のことに注意してください。 onは、動的に追加されたコンテンツでも動作するイベントを追加するための好ましい方法です。

また、onがjQuery 1.7に追加されているため、古いバージョンを使用している場合は、delegateを使用する必要があります。 selecterとイベントの順序が逆になっていることに注意してください:

$(document).delegate("a.someClass", "click", function(){ 
}); 

ここでは、超高速応答のためのdocs for on()

+0

迅速な対応に感謝します。 – tewoos

+0

私はOPがこれをドキュメント全体のあらゆる単一のリンクにフックしたいと思っています。 '$(document).on(" click "、" .generate "、function(){});はもっと意味があります。 – jfriend00

+0

@tewoos - 問題ありません - それがあなたのために働くことを願って –

2

はライブ()イベントハンドラを使用してください。

+0

おかげです。 – tewoos

関連する問題