0

这是我在 Yii 框架 Web 应用程序的 CGridView 中需要帮助的部分

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

目前,当我在前端查看时,它将“链接”显示为超链接。我想要发生的是,它将显示一个可点击的图像图标,例如 /images/click_icon.jpg 而不是普通的单词超链接,然后一旦它被点击,它应该调用这个

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

那么如何在我上面粘贴的那个数组中做到这一点?

4

2 回答 2

2

您可以使用imageUrlCLinkColumn 的属性

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

无论您将图像存储在何处,都必须提供该 url,对于上面的示例,图像位于项目根目录中,因此我使用了Yii::app()->baseUrl.

于 2012-09-01T09:55:51.380 回答
1

当你写

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

您实际上在做的是在“click”事件上触发类选择器“.fancybox”对所有匹配元素的初始化。尽管您正在进行初始化,但您并没有让 fancybox 以正确的方式管理元素的 onclick 事件。

你应该有

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

并且,如fancybox 站点上的说明所示,将fancybox 初始化放在document.ready 事件中。但是如果你坚持要在网格中初始化fancybox对象,你应该写

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

但是您可能需要在这两个电话之间等待,必须对其进行测试...

顺便说一句,您正在为网格列中的每个单元格一遍又一遍地重复相同的链接。这有什么意义吗?我会将链接放在网格之外。

于 2012-09-02T11:29:26.923 回答