2011-08-03 36 views
0

我使用Yii框架,並廣泛使用CListViews。但是我正在汽車無對着我並不能解決一個問題:更新CListView維護事件處理程序

這是我CListView中

  $this->widget('zii.widgets.CListView', array(
      'viewData'=>array('sent'=>$sent), 
      'dataProvider'=>$dp, 
      'pager' => array(
          'prevPageLabel'=>'< Prev.', 
          'nextPageLabel'=>'Next>', 
          'header'=>'Pagina: ', 
          'pageSize'=>5,), 
      'template'=>"{items}\n{pager}", 
      'itemView'=>'_messageView', 
      'emptyText'=>'Empty inbox', 
      'enablePagination'=>true, 
      'afterAjaxUpdate' => 'js:function(id) {alert("after");}', 
      'id'=>'listMessages', 
     )); 

,我有一個JS方法,更新列表方式如下:

function sent_view(){ 
$.fn.yiiListView.update('listMessages', 
     {data:'type=sent', url:'view?sort=timestamp&ajax=listMessages'}); 
} 

在此之後函數被調用,所有綁定到CListView的每個項目的事件都不再存在。我嘗試添加下一段代碼,以便再次附加處理程序,但它不起作用。如果我在$ .fn.yiiListView.update代碼行後面添加它,它甚至不會顯示警報。

$(".individualMessage").mouseover(function(){ 
    $(this).css('cursor','pointer'); 
    $(this).css("background",'url(/../images/messages/background.png)'); 
}); 

有人遇到過類似的問題嗎?謝謝!

+0

您是否嘗試過使用「委託」或「活」jQuery構造? http://api.jquery.com/delegate/ – ldg

+0

你是對的,這是現場演出!我只是沒有正確使用它。謝謝兩位! (@ldg和@sadaf) – Soph

回答

1

您需要例如使用jQuery的「直播」功能

$(".individualMessage").live("mouseover",function(){ 
    $(this).css('cursor','pointer'); 
    $(this).css("background",'url(/../images/messages/background.png)'); 
}); 
+1

注jQuery.live與懸停事件將會減慢大頁面(因爲我發現了艱辛的道路),以及技術上.live在jQuery的1.7折舊。它會作爲一種雜物,但它並不理想。 –

+0

從jQuery 1.7開始,[.on()](http://api.jquery.com/on/)方法提供了附加事件處理程序所需的全部功能。 – sadaf