用户必须单击列中的服务。函数中的代码太大而且没有代价,不能修改,代码工作正常,这是重要的部分。
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...
}
};
当点击一行时,它调用一个函数deliverServiceClicked,它执行某些操作,然后返回它,后续代码构建表。
我在rowCallback函数中使用了一个带有Jquery插件的Jquery函数,问题是boss希望“box”“完全”匹配网页上其他框的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 ....所以它改变全局,但没有任何反应,当我关闭并再次打开它没有longers要求YES NO,但它添加并且完美地构建了表格。
所以我的问题是这个,为什么addDeliveredServicePressed();在我的Confirmed函数没有被执行的情况下,你会使用什么其他方法?,我想到了很多选项,我带来了全局变量和if作为更好的解决方案,即使全局变量也不是最好的选择。 / p>
无论如何我是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行代码,并且有多个函数< / p>
/**
* 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,