2012-02-09 10 views
0

一度のみ動作します:Ajaxは私がJS持っCodeIgniterの

jQuery('.unblock').click(function(){ 
     var num = jQuery('.page.active').text(); 
     var ban_id = jQuery('.unblock').attr('id'); 

     jQuery.post('http://127.0.0.1/auth_system_1/user_activity/delete_user_ban', { ban_id : ban_id, num : num }, function(data) { 

       if (data.status == 'ok') 
       { 
        //jQuery('.comment-box').remove(); 
        jQuery('#ban_list').append(data.html); 
       } 
       else 
       { 
        alert('error'); 
       } 

     }, 'json'); 
    }); 

マイコントローラ:

function delete_user_ban() 
{ 
    $user_id = $this->session->userdata('user_id'); 

    $ban_id = $this->input->post('ban_id'); 

    $current_page = (int)$this->input->post('num'); 

    $current_page = ($current_page-1)*2; 

    //$this->activity_model->delete_user_ban($ban_id); 

    $per_page = 2; 

    $data['ban_list'] = $this->user_activity_lib->user_ban_list($user_id, $current_page, $per_page); 

    $data['test'] = rand(1,100); 

    $html = $this->load->view('front_end/ajax_delete_ban', $data, true); 

    unset($data); 
    unset($user_id); 
    unset($ban_id); 

    echo json_encode(array(
          'status' => 'ok', 
          'html' => $html, 
          'start_page' => $current_page)); 

} 

$data['test'] = rand(1,100); is for test! I make random number and send it to view. 

私の問題は、私はボタン「禁止を解除」のレコードがでDeleteキーを押したときに、私は、ページ上のいくつかのブロックを持っているということですがデータベースとjsonでロードされた行(ページあたり2項目)を返し、jsonから来たブロック上の同じボタンをクリックしようとすると動作しません。どうして ?

私がjsonから来たアイテムを押すと、私のajaxが2番目にコールしないのですか?

jsonから来たビューは、ページ読み込み時にロードするものと同じです。

答えて

6

キーはjQueryのon()メソッドです。

.on() - jQuery API

なぜ? DOMがロードされた後にHTML要素がWebページに追加されても、たとえば、次のような宣言されたイベントは表示されません。 .click()または.hover()などとなります。

jQuery('.unblock').on('click', function(){ 
    var num = jQuery('.page.active').text(); 
    var ban_id = jQuery('.unblock').attr('id'); 

    jQuery.post('http://127.0.0.1/auth_system_1/user_activity/delete_user_ban', { ban_id : ban_id, num : num }, function(data) { 

      if (data.status == 'ok') 
      { 
       //jQuery('.comment-box').remove(); 
       jQuery('#ban_list').append(data.html); 
      } 
      else 
      { 
       alert('error'); 
      } 

    }, 'json'); 
}); 

注: jQueryのon()方法は、jQueryの1.7で導入されました。古いバージョンのjQueryを使用する場合は、代わりにlive()メソッドを使用してください。

.live() - jQuery API

+0

'(生きて)大きな –

+0

はあなたに感謝のjQuery 1.7のよう'実際に廃止されました! – Viktors

+1

@papaiatis:Nice ninjaの編集 - 今すぐ+1できます:) –

関連する問題