用户必须单击列中的服务。函数中的代码太大且专有,无法修改,代码工作正常,这是重要的部分。
this.addDeliveredServicePressed = function() {
//big code ...............................
//Important bit ORIGINAL
var rowCallback = function(nRow, aData, iDisplayIndex) {
/* Set onclick action */
nRow.onclick = deliveredServiceClicked;
return nRow;
//Follow up code...
}
};
单击一行时,它会调用函数 DeliveredServiceClicked,该函数执行某些操作,然后返回它,后续代码构建表。
我在带有 Jquery 插件的 rowCallback 函数中使用了 Jquery 函数,问题是老板希望“框”“完全”匹配网页上其他框的 css 样式。所以我所做的是在 nRow.onclick 上创建某种“桥”,使用 YES/NO 选项调用 HTML DIV(我这样做是为了使用已经创建的 CSS 类),No 选项是一个关闭函数, YES 函数,应该运行一个更改全局变量的函数,以便它验证并运行 nRow.onclick=deliveredServiceClicked;
这是我更改后的主要功能。
this.addDeliveredServicePressed = function() {
var rowCallback = function(nRow, aData, iDisplayIndex) {
/* Set onclick action */
if (confirmedglobal==1){
alert("serviceclicked");
nRow.onclick = deliveredServiceClicked;
confirmedglobal=0;
//This confirmedglobal=0, puts the global back to 0 so after the first YES it resets it back to 0, so it keeps asking.
return nRow;
}else if (confirmedglobal==0){
//This is the redirect to the HTML dialogue, using some util
nRow.onclick = ConfirmService;
}
};
这是我的 YES onclick 功能
this.Confirmed = function (){
confirmedglobal = 1;
addDeliveredServicePressed();
//diag box close util to be added, not now
}
因此,要恢复此功能,在我的计划中,应该将全局设置为 1,然后从一开始就执行函数 addDeliveredServicePressed,这是主要功能,因此它会更新我想要的标记。它现在正在做的是将全局设置为 1,但它不会 addDeliver .... 所以它改变了全局,但没有任何反应,当我关闭并再次打开时,它不再要求 YES NO,但它添加并完美地构建桌子。
所以我的问题是,为什么 addDeliveredServicePressed(); 在我的 Confirmed 函数未执行时,您会使用什么其他方法??我考虑了很多选项,我提出了全局变量和 if 作为更好的解决方案,即使全局变量不是最佳选择。
无论如何,我是 js 中的菜鸟。所以它不像我可能没有错过任何东西
跟进问题
在同一个js上只有这个更多
deliveredServicesTable = $('#deliveredServices').dataTable( {
"bDestroy": true,
"oLanguage": {
"sEmptyTable": translate.msg("info.no.delivered.services"),
"sInfo": "",
"sInfoEmpty": "",
"sZeroRecords": ""
},
"bFilter": false,
"fnRowCallback": rowCallback,
"fnHeaderCallback": headerCallback,
"bLengthChange": false,
"bProcessing": true,
"bPaginate": false,
"aoColumns": columns,
"sScrollX": "95%",
"sScrollY": "158px",
"aaData": (sessvars.state.visit != null &&
sessvars.state.visit.currentVisitService != null &&
sessvars.state.visit.currentVisitService.visitDeliveredServices !== null ?
sessvars.state.visit.currentVisitService.visitDeliveredServices : null)
});
$(window).bind('resize', function () {
deliveredServicesTable.fnAdjustColumnSizing();
} );
}
在一个名为“jquery.datatables.js”的文件上,有一个 jquery 插件,用于某些功能,但我认为我不需要任何东西,它就像一个 35k 行代码,并且有多个功能
/**
* This function allows you to 'post process' each row after it have been
* generated for each table draw, but before it is rendered on screen. This
* function might be used for setting the row class name etc.
* @type function
* @param {node} nRow "TR" element for the current row
* @param {array} aData Raw data array for this row
* @param {int} iDisplayIndex The display index for the current table draw
* @param {int} iDisplayIndexFull The index of the data in the full list of
* rows (after filtering)
* @dtopt Callbacks
*
* @example
* $(document).ready(function() {
* $('#example').dataTable( {
* "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
* // Bold the grade for all 'A' grade browsers
* if ( aData[4] == "A" )
* {
* $('td:eq(4)', nRow).html( '<b>A</b>' );
* }
* }
* } );
* } );
*/
"fnRowCallback": null,