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()"),

実際に行っているのは、「クリック」イベントで、クラスセレクター「.fancybox」によって一致したすべての要素の初期化をトリガーすることです。初期化を行っていますが、fancyboxに要素のonclickイベントを適切な方法で管理させていません。

あなたが持っている必要があります

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

そして、fancyboxサイトの説明が示すように、fancyboxの初期化をdocument.readyイベントに入れます。ただし、グリッドでfancyboxオブジェクトを初期化する必要がある場合は、次のように記述します。

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

しかし、これら2つの呼び出しの間に待つ必要があるかもしれません、それをテストする必要があります...

ちなみに、グリッド列のすべてのセルに対して同じリンクを何度も繰り返しています。意味がありますか?リンクをグリッドの外に配置します。

于 2012-09-02T11:29:26.923 に答える