2013-12-16 65 views
0

許多用於ajax請求的輸入字段和按鈕對僅適用於第一次。在第一個請求 - 響應之後,其他按鈕不會調用ajax函數。Yii ajax jquery多重請求只是第一個作品

有一個數據網格列表。每行都有一個標題字段(作爲輸入),並帶有一個按鈕來調用ajax函數來更新此字段和刷新列表。

我第一次點擊其中的一個按鈕,一切正常,數據發送和列表刷新與新的數據。但在此之後,當我單擊其中一個按鈕時,什麼都不會發生,即使功能也不會調用。 我在哪裏做錯了? 我AJAX功能:

$('.titleBtn').click(function(event){ 

    var id = $(this).attr('name'); 
    var title = $('#' + id).attr('value'); 


    var formAction = '".$this->createUrl('article/changeTitle')."'; 

    $.get(formAction,{id:id,title:title},function(result){ 
     $.fn.yiiGridView.update('article-grid'); 


     } 
    ); 
    event.preventDefault(); 
}); 

我的網格列表:

<?php $form=$this->beginWidget('CActiveForm', array(
'action'=>Yii::app()->createUrl($this->route), 
'method'=>'get', 
'id'=>'Artform', 
)); ?> 

<?php $this->widget('bootstrap.widgets.TbGridView', array(
    'id'=>'article-grid', 
    'dataProvider'=>$model->search(), 
    'filter'=>$model, 
    'columns'=>array(
     'ID', 
     array(
      'header'=>Yii::t('labels','Title'), 
      'name'=>'Title', 
      'type'=>'raw', 
      'value'=> function($data) use ($model) { 
        return '<input type="text" id="'.$data->ID.'" value="'.$data->Title.'"><button type="button" name="'.$data->ID.'" class="titleBtn" >Update</button>'; 
           }, 

     ), 
    .... 
), 
)); ?> 
//Some buttons irrelevant to this subject for submitting whole list. 
<?php $this->endWidget('CActiveForm'); ?> 
+0

事件。單擊功能?它在ready()函數中嗎?或外面? – Sho

+0

它在ready()函數中 – Nima

回答

0

你什麼時候運行$( 'titleBtn')您可以設置使用delegate

$('#Artform').delegate('.titleBtn', 'click', function() { 
... 
}); 
0

您需要afterAjaxUpdate選項添加到您的TbGridView,並添加js代碼AJAX更新後調用和設置您的處理程序。