クリックしてdataTableを展開して、詳細情報を表示しようとしています。問題は、テーブルに約1000レコードを入力しているため、詳細データ(拡張されるデータ)を保持できる唯一の方法は、次のようなループプロセス中にリンクを介してデータを送信することです...
var imgCell = '<a href="javascript:storeInfo("'+theFilePath+'","'+theWebAddress+'","'+projectStatus+'");"><img src="https://cubistmediagroup.sharepoint.com/sites/canvas/PublishingImages/details_open.png"></a>';
これで、クリックするとこの関数を呼び出す画像リンクが作成されます...
function storeInfo (filePath, webAddress, projectStatus)
{
theFilePath = filePath;
theWebAddress = webAddress;
switch(projectStatus){
case "New Work - Waiting Activation":
controlButton("NewWork", NewWorkTable);
break;
case "Active Projects":
controlButton("ActiveProjects", ActiveProjectsTable);
break;
case "Waiting for Assets or Approvals":
controlButton("WaitingAssets", WaitingAssetsTable);
break;
//AND A WHOLE LOT MORE CASES
}
}
基本的に、この関数はファイルパスとWebアドレスをグローバル変数に保存して後で使用できるようにしてから、controlButton
関数を呼び出します。
function controlButton (projectStatus, theTable){
$('#'+projectStatus+' tbody td img').live('click', function () {
var nTr = this.parentNode.parentNode.parentNode;
if ( this.src.match('details_close') )
{
// This row is already open - close it
this.src = "https://cubistmediagroup.sharepoint.com/sites/canvas/PublishingImages/details_open.png";
theTable.fnClose( nTr );
}
else
{
// Open this row
this.src = "https://cubistmediagroup.sharepoint.com/sites/canvas/PublishingImages/details_close.png";
theTable.fnOpen( nTr, fnFormatDetails(theTable, nTr), 'details' );
}
});
}
これは、htmlテーブルでimgを取得し、その行を見つけて、拡張可能なデータを開いたり閉じたりする関数を呼び出します...これは 、拡張可能な行にデータを入力するためにfnOpen
使用fnClose
されます...fnFormatDetails
これはすべて正常に機能し、すべてが適切に渡されて読み込まれますが、唯一の問題は、展開可能な行を開閉するために2回クリックする必要があることです...画像上のリンクに対して1回、次にjQuery関数を呼び出すために別のクリックが必要です。これを回避する方法が必要で、個々のエントリのデータをロードしながらワンクリックで実行できます...最善の方法は、jQuery関数を呼び出さずに呼び出す方法を見つけることだ.live('click', function()
と考えていました。 2回目のクリックの必要性。
助言がありますか?