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)内容?
事实证明我需要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)