【问题标题】:Datatables search option for hyperlinks超链接的数据表搜索选项
【发布时间】:2013-12-17 06:57:30
【问题描述】:

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

在执行搜索时,我的数据表也在使用锚标记搜索 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" 和 version(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 排序插件的错误。

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

    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标签删除。请注意,默认情况下,此函数不包含在 DataTables 中,因为它比内置方法稍慢,这对于大多数用例来说已经足够了。

    何去何从:

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

    【讨论】:

    • 我发现这个链接也很有用:stackoverflow.com/questions/12372055/… 它的版本问题也。我刚刚将 dataTables.js 版本 1.9.4 更改为 1.9.0 并使 "sType":"html" 和它的工作很棒!
    • 您不需要降级您的版本。这也适用于 1.9.4
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2021-02-05
    相关资源
    最近更新 更多