过滤jQuery数据表时如何忽略HTML?

mac*_*ost 9 javascript jquery jquery-datatables

我正在使用jQuery DataTables插件,并且其中的过滤功能存在轻微问题.如果我有一个包含内容的表格单元格<a href='foo6'>Blah</a>,并且我过滤为"6",那么即使"Blah"中没有"6",该单元格也会显示出来.我想做的是让DataTables插件在进行过滤时忽略HTML.

我已经尝试过搜索DataTables网站,发现冲突,无用的线索.一篇帖子提示我sType:'html'在aaColumns的定义中需要一个选项,但我尝试了它并没有帮助......加上后来的帖子暗示当前版本的DataTables会自动检测HTML sType.我还发现了这段代码:

// Make filtering ignore HTML (see http://datatables.net/plug-ins/filtering)
$.fn.dataTableExt.ofnSearch['html'] = function ( sData ) {
    var n = document.createElement('div');
    n.innerHTML = sData;
    if (n.textContent) {
        return n.textContent.replace(/\n/g," ");
    } else {
        return n.innerText.replace(/\n/g," ");
    }
};
Run Code Online (Sandbox Code Playgroud)

应该解决的问题......但事实并非如此.

所以,我的问题是:有没有人知道如何在过滤行时使DataTables忽略非文本(即HTML)内容?

mac*_*ost 6

事实证明我需要mRender在我的列标题上使用自定义函数.更重要的是(因为我首先尝试了这一点而没有检查"type"参数),你需要使用提供给该函数的type参数使其仅在过滤时应用.

我的最终结果看起来像这样:

aaHeaders: [{
    mRender: function(data, type, full) {
        // If we're filtering, don't look at the HTML; only filter on the text
        return type == 'filter' ? $(data).text() : data
    }
}], //...
Run Code Online (Sandbox Code Playgroud)