数据表搜索超链接的选项

时间:2013-12-17 06:57:31

标签: jquery datatables

在我的项目中,我创建了一个dataTable,除了一个特殊情况外,一切正常。

在执行搜索时,我的数据表还在锚标记中搜索href内的文本。但我不想考虑这种情况。

http://datatables.net/examples/advanced_init/html_sort.html

修改

我知道如果我按照DataTable 1.9.3 searching issue - prevent Data Table from considering href value - 的建议使用sType =“html”和版本( v 1.9.0 ),则会解析

但我希望通过dataTables排序插件对该列进行自定义排序,因此可以使用sType =“html”从搜索字符串中删除HTML标记,并将我的自定义排序插件放在一起,是否可以为一列的sType定义了多个sType?

考虑这个链接,它使用dataTables排序插件进行排序,

http://datatables.net/release-datatables/examples/plug-ins/sorting_sType.html

在该示例中,我如何使用sType =“html”,以便我的数据表不会在锚标记中搜索href内的文本。

希望你理解我的问题。任何帮助将不胜感激。

我正在使用版本DataTable 1.9.4,因为在较低版本中我收到有关dataTables排序插件的错误。

1 个答案:

答案 0 :(得分:2)

DataTables有一个名为'html'的内置类型,它将从搜索字符串中删除HTML标记,但它不能处理嵌套HTML在另一个元素的属性中。你可以这样做:

    var oTable = $('#example').dataTable({
        "aoColumns": [
            "sType": "html", //here the first column is of type 'html'
            null //auto detect data type for second column
        ]
    });

您还可以使用column type based filtering插件。此插件功能会取代内置方法,并提供完整的HTML标记删除功能。请注意,默认情况下,此函数不包含在DataTable中,因为它比内置方法稍慢,这对于大多数用例来说已经足够了。

何去做:

$.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," ");
  }
}

正如我在您的代码中看到的那样,使用第一个选项(请参阅下面的确切代码)就可以了。

$('#example').dataTable({
  "aoColumns": [null,{"sType":"html"}]
});