javascript - 带有渲染回调函数的 jQuery 数据表问题

标签 javascript jquery datatables

我正在使用渲染回调函数向我的 jQuery dataTable 添加一个 div:

columns: [
            {
                data: 'FirstStep',
                render: function (data, type, row) {
                    if (data === 4) {
                        return '<div class="red-circle"></div>';
                    }
                    else if (data === 3) {
                        return '<div class="yellow-circle"></div>';
                    }
                    else if (data === 2) {
                        return '<div class="blue-circle"></div>';
                    }
                    else if (data <= 1) {
                        return '<div class="green-circle"></div>';
                    }
                }
            },
            --Other columns 
            }
        ]

这工作正常,但如果我将渲染调用提取回一个函数(需要重复使用几次)并尝试如下代码,它不起作用。

function renderCellItems(data, type, row) {
        if (data === 4) {
            return '<div class="red-circle"></div>';
        }
        else if (data === 3) {
            return '<div class="yellow-circle"></div>';
        }
        else if (data === 2) {
            return '<div class="blue-circle"></div>';
        }
        else if (data <= 1) {
            return '<div class="green-circle"></div>';
        }
    }

......................

{
    data: 'FirstStep',
    render: renderCellItems(data, type, row)
}

最佳答案

问题是因为您目前正在从该函数提供 response 作为 render 属性,即。 HTML 字符串,但该属性需要一个函数。

您需要提供对该函数的引用。为此,请删除尾随的括号和参数:

{
  data: 'FirstStep',
  render: renderCellItems
}

另请注意,您可以通过使用数组来存储返回值来改进逻辑:

function renderCellItems(data, type, row) {
  var classes = ['green-circle', 'blue-circle', 'yellow-circle', 'red-circle'];
  return '<div class="' + classes[Math.max(data, 1) - 1] + '"></div>';
}

console.log(0, renderCellItems(0));
console.log(1, renderCellItems(1));
console.log(2, renderCellItems(2));
console.log(3, renderCellItems(3));
console.log(4, renderCellItems(4));

关于javascript - 带有渲染回调函数的 jQuery 数据表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50639539/

相关文章:

php - jquery 数据表搜索不起作用,但其他一切都很好

javascript - mootols 中的多级下拉菜单

javascript - 带有参数的 vue-router 无法在 netlify 上运行部署

javascript - jQuery 检索选择选项值

javascript - 如何在 jQuery 和 CasperJS 中禁用超时

jQuery - 不在正文中选择器

javascript - 流 - 无法调用 `data.map`,因为 `map` [1] 中缺少属性 `FetchData`

jquery - RefetchEvents 全日历

jquery - 加载 ASP.Net MVC JSONResult jQuery 数据表

javascript - 将 div 悬停在数据表标题单元格上