2012-09-01 39 views
0

這裏就是我需要幫助,我的Yii框架的Web應用程序的CGridView部分如何使Yii框架的CGridView的linkHtmlOptions顯示爲圖像圖標,並在點擊時觸發javascript/jquery?

array(
     'class'=>'CLinkColumn', 
     'linkHtmlOptions'=>array("onclick"=>"$('.fancybox').fancybox()"), 
     'header'=>'Image', 
), 

目前,當我認爲,在前端,它顯示「鏈接」爲超鏈接.. 我想要什麼發生的是,它會顯示類似如/images/click_icon.jpg,而不是一個普通的字超級鏈接可點擊圖片圖標,那麼一旦它被點擊,就應該把這個

$(".fancybox").fancybox(); 

那麼怎麼辦,在這我粘貼上面的數組?

回答

1

當你寫

'linkHtmlOptions'=> array("onclick"=>"$('.fancybox').fancybox()"), 

你實際上是做由類選擇「.fancybox」觸發所有匹配的元素的初始化,關於‘點擊’事件。雖然您正在進行初始化,但您並不是想以適當的方式管理元素的onclick事件。

你應該有

'linkHtmlOptions'=> array("onclick"=>"$('.fancybox').click()"), 

,併爲在現場的fancybox顯示的指示,把初始化的fancybox中的document.ready事件。但是,如果你堅持要初始化在網格中的fancybox對象,你應該寫

'linkHtmlOptions'=> array("onclick"=>"$('.fancybox').fancybox(); $('.fancybox').click()"), 

但是你可能需要等待在這兩個電話之間,將不得不測試它...

順便說一句,您將一遍又一遍地重複網格列中每個單元格的相同鏈接。它有任何意義嗎?我會把鏈接放在網格之外。

2

您可以使用imageUrl property of CLinkColumn

array(
    'class'=>'CLinkColumn', 
    'linkHtmlOptions'=>array("onclick"=>"$('.fancybox').fancybox()"), 
    'header'=>'Image', 
    'imageUrl'=>Yii::app()->baseUrl.'/images/click_icon.jpg' 
), 

無論你在哪裏存儲圖像,該網址將不得不提供,上面的例子中,圖像是在項目的根,所以我用Yii::app()->baseUrl

+0

我添加了這個'imageUrl'=> Yii :: app() - > baseUrl。'/ images/ico-favourite.gif'但是javascript不起作用。 – sasori

+0

是沒有imageUrl的javascript工作? –

+0

我可以(並且想要)幫助你做到這一點,但你必須先給我一些細節:1.你使用的是哪個版本的fancybox? 2.你如何在你的視圖中包含fancybox css和javascript? 3.你是否有機會使用此擴展程序? –