2011-10-07 2 views
-1

皆さん、こんにちは。 私はjQuery: Refresh div after another jquery action? を見てきました。私はテーブルをデータベースから生成し、削除をクリックすると、行を削除し、divをリフレッシュしますが、その後は私のjquery関数は動作しません。私の体でMVC f/wでjQueryを使ってdivをリフレッシュしようとしています

$('#docs td.delete').click(function() { 
    $("#docs tr.itemDetail").hide(); 
    var i = $(this).parent().attr('id'); 

    $.ajax({ 
     url: "<?php echo site_url('kt_docs/deleteDoc'); ?>", 
     type: 'POST', 
     data: 'id=' + i, 
     success: function(data) { 
      $("#docs tr.itemDetail").hide(); 
      $("#f1").html(data); // wont work twice    
      //$("#docs").load(location.href+" #docs>*"); //works once as well 
     } 
    }); 
}); 

私は

<fieldset class='step' id='f1'> 
    <?php $this->load->view('profile/docs_table'); ?> 
</fieldset> 

プロファイル/ドキュメントを持ってDBからデータを読み込みます。 <table id='docs'>....</table> と私のコントローラ:事前に

function deleteDoc() { 
    $id = $_POST['id']; 
    $this->load->model('documents_model'); 
    $del = $this->documents_model->deleteDocument($id);  
    return $this->load->view('docs_table'); 
} 

ありがとう!

答えて

3

$('#docs td.delete').click(function() { 

を交換する必要がありますあなたはどこにでも( '#ドキュメントtd.delete')$に一致する表現を削除していますか?その場合は、$ .live()を使用することを検討してください。これは、現在または将来に関係なく、すべての一致する要素に関数を追加します。例えば

$('#docs td.delete').live('click', function() { 
    // Do stuff. 
}); 

http://api.jquery.com/live/

+0

ありがとう、ありがとう、ありがとう!完璧! – Alanagh

+0

うれしかった! :) – Wayne

1

イベントを持つhtml要素をajax経由のデータに置き換えていますか? td.delete要素を置き換えると、新しい要素は自動的にバインドされません。

+0

はい、私は同じ内容の#f1のコンテンツを交換しています...私もtd.deleteを持って、同じテーブル、と意味。 – Alanagh

2

click()の代わりにbind()を使用してください。 click()メソッドは、DOMに動的に追加された要素に対しては機能しません。これはおそらく、初めて更新された要素であり、更新されたコンテンツで再読み込みされた要素ではありません。

あなただけ

$('#docs td.delete').bind('click', function() { 
関連する問題