2011-12-20 12 views
1

jqgridのColModelにハイパーリンクのonclick関数でイベントを書きたいと思います。どのようにjqgridにハイパーリンク列のonclickの中で関数を呼び出すことjqgridのColModelでハイパーリンクのonclickにイベントを書き込む方法

jsのコードは、この

colModel:[  
    {name:'controlCenterCode', 
    formatter:'showlink', //formatoptions:editControlCenterPage(results), formatoptions:onClick=editControlCenterPage(results), 
    index:results.controlCenterCode, width:70} 

が直接取り組んでいる関数を呼び出すようなものですが、私は、セルのonclickの中で関数を呼び出したい 特定の列、どのようにそれを解決するには?

と私は解決策に おかげ

+0

。 –

答えて

1

私を提案してください、私は使ったことがないも、それは

{name:'controlCenterCode',index:"<span><a href='#'onclick='editControlCenterPage(results)'>"+results.controlCenterCode+"</a></span>", width:70} 

が動作していない、直接の列にハイパーリンクを含めること、また、このように試してみましたshowlinkフォーマッタが、これはあなたのために働く必要があります。

あなたのリンクにlive event handlerを追加します。

$('[aria-describedby="gridId_columnName"] a').live('click', function() { 
    alert('hello'); 
}); 

aria-describedbyプロパティの形式はgridId_columnNameでなければなりません。gridIdはグリッドをホストする要素のIDです。$( '#gridId')。jgGrid()...、columnNameはコラムあなたのケースで、それは「controlCenterCode」になるので、colModelで定義された

として私が使用してソリューションです:

  1. がリンクをレンダリングするために、カスタムフォーマッタを使用してください。
  2. 私のリンクでは、クラスを割り当てます(クラスはスタイルシートに存在する必要はありません)。
  3. リンクに渡すデータをdata attributeとして埋め込みます。 data-idはHTML4では厳格ではありませんが、現代のすべてのブラウザで動作します。
  4. ライブイベントハンドラをそのクラスの要素にアタッチします。

例:

、このような特定のクラスを持っているテーブル内のタグを固定するイベントを委任として、onclick属性を使用するよりも、よりよい解決策は通常あり
// custom formatter: 
return '<a href="#" class="actionButton" data-id="124">Click Me!</a>'; 

// attach live event 
$('.actionButton').live('click', function() { 
    alert($(this).attr('data-id')); 
}); 
関連する問題