2011-08-03 5 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 and @sadaf) – Soph

답변

1

예를 들어 jQuery의 "라이브"기능을 사용해야합니다.

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

참고 hover 이벤트가있는 jQuery.live는 큰 페이지를 느리게 만들 것입니다 (어려운 방법을 발견 한 것처럼). 기술적으로 .live는 jQuery 1.7에서 가치가 떨어집니다. 그것은 kludge로 작동하지만, 이상적이지는 않습니다. –

+0

jQuery 1.7부터 [.on()] (http://api.jquery.com/on/) 메서드는 이벤트 처리기를 연결하는 데 필요한 모든 기능을 제공합니다. – sadaf