jQuery DataTable fnRowCallback:AJAX返回值设置行样式失效求助
jQuery DataTable 动态颜色样式设置问题解决
你代码里的问题出在错误使用了val()方法访问AJAX返回的颜色字段,而且错误地将其作为字符串传入css()方法,导致样式不生效。
错误原因:
val()是jQuery用于获取/设置表单元素值的方法,这里不需要用它来访问DataTable行数据;fnRowCallback的第二个参数aData就是当前行的完整数据对象,直接通过aData.fcolor、aData.bcolor就能拿到对应的颜色值;- 你写的
'val(data.bcolor)'会被当成普通字符串,浏览器无法识别为有效的颜色值。
修正后的代码:
把fnRowCallback里的HBL判断部分改成下面这样:
fnRowCallback: function (nRow, aData, iDisplayIndex, iDisplayIndexFull) { if (aData.menu_name == "HBL") { $('td', nRow).css('background-color', aData.bcolor); $('td', nRow).css('color', aData.fcolor); } if (aData.menu_name == "Garden") { $('td', nRow).css('color', '#0542fa'); $('td', nRow).css('font-weight', 'bold'); } if (aData.menu_name == "HOME") { $('td', nRow).css('background-color', '#0d05fc'); $('td', nRow).css('color', '#ffffff'); } }
另外,注意确保你的AJAX接口返回的fcolor和bcolor字段值是有效的CSS颜色格式(比如#ffffff、rgb(255,255,255)等),如果数据库里存的格式不对,也会导致样式不生效。
内容的提问来源于stack exchange,提问作者Danny
相关产品推荐
相关产品推荐

