2011-07-24 10 views
0

私はaタグのhref属性を読み込み、ajax経由で新しいコンテンツを読み込むクリックハンドラを持っています。関数はfalseを返し、href urlに従わない。これは一度動作しますが、その後はその関数が呼び出されるようには見えず、コンテンツは非同期に読み込まれず、代わりにブラウザのリンクに従います。jQuery ajaxは一度しか動作しませんが、その後は毎回ブラウザにhrefがロードされます

$ ("document").ready(function() { 
      $(".post_update").click(function() { 
       $("#dashboard_content").html(ajax_load).load($(this).attr('href')); 
       return false; 
      }); 
}); 

<a href="{{ path('post_update', {"id":post.id}) }}" class="post_update">Edit</a> 
+0

ajax_loadとは何ですか? – ShankarSangoli

+0

ajax_loadは文字列 "Loading ..."で、.post_updateは#dashboard_contentの中にあります。 – ThinkingInBits

+0

"{{path( 'post_update'、{" id ":post.id})}}" ? – ShankarSangoli

答えて

3

文書を文字列として使用しないでください。オブジェクト自体がbelwoコードを試してください。

リンクはダッシュボードコンテナの内側にあるため、この場合はライブを使用する必要があります。 .post_update#dashboard_content内にある場合

$(document).ready(function() { 
      $("a.post_update").live('click', function() { 
       $("#dashboard_content").html(ajax_load).load($(this).attr('href')); 
       return false; 
      }); 
}); 
+0

ドキュメントを文字列にしないように変更しましたが、これはまだ最初の時間。 – ThinkingInBits

+0

今すぐお試しください私は私の答えを編集した、私はリンクがコンテナの中にあることを知りませんでした。 – ShankarSangoli

+0

ありがとうございました。 .liveがトリックをしました。 – ThinkingInBits

0

、問題は、イベントハンドラが結合した要素は、今なくなっているということです。最も簡単な解決策は、jQuery.liveメソッドを使用することです。したがって、コードは次のようになります。

$(document).ready(function() { 
    $(".post_update").live("click", function (e) { 
     $("#dashboard_content").html(ajax_load).load($(this).attr('href')); 
     return false; 
    }); 
}); 
関連する問題