You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery/AngularJS DataTables无匹配行时,在表头下显示<p>内容?

实现无筛选结果时在DataTables表头下方显示自定义提示

针对WordPress中基于jQuery+AngularJS的DataTables场景,按以下步骤实现需求:

方案1:利用DataTables内置语言配置(推荐)

DataTables自带空数据提示配置,直接初始化时指定内容即可自动渲染在表头下方:

jQuery版本初始化代码

// 替换成你的表格ID
$('#program-table').DataTable({
  language: {
    // 直接插入自定义提示内容
    emptyTable: '<p>No filters found</p>'
  },
  // 其他表格配置(比如分页、排序等)
});

AngularJS(angular-datatables)版本配置

angular.module('your-wordpress-app').controller('ProgramTableCtrl', function($scope, DTOptionsBuilder) {
  $scope.dtOptions = DTOptionsBuilder.newOptions()
    .withLanguage({
      emptyTable: '<p>No filters found</p>'
    })
    // 追加其他DataTables配置,比如.withPaginationType('full_numbers')
});

方案2:动态插入现有

标签(保留原DOM元素)

如果需要保留页面中已存在的<p>No filters found</p>,可以监听表格的draw事件,动态控制提示的显示位置:

jQuery版本实现

var $table = $('#program-table').DataTable();
var $emptyMsg = $('p:contains("No filters found")').hide(); // 先隐藏原提示

$table.on('draw.dt', function() {
  var tbody = $table.find('tbody');
  if ($table.data().length === 0) {
    // 清空空行,插入提示到tbody
    tbody.html('<tr><td colspan="100%" class="empty-msg-container"></td></tr>');
    tbody.find('.empty-msg-container').append($emptyMsg.show());
  } else {
    $emptyMsg.hide();
    // 恢复表格原有空行(如果需要)
    tbody.find('.empty-msg-container').parent().remove();
  }
});

AngularJS版本实现

angular.module('your-wordpress-app').controller('ProgramTableCtrl', function($scope, DTInstanceFactory) {
  $scope.dtInstance = DTInstanceFactory.newInstance();
  var $emptyMsg = angular.element('p:contains("No filters found")').hide();

  $scope.dtInstance.then(function(instance) {
    instance.DataTable.on('draw.dt', function() {
      var tbody = instance.tableElement.find('tbody');
      if (instance.DataTable.data().length === 0) {
        tbody.html('<tr><td colspan="100%" class="empty-msg-container"></td></tr>');
        tbody.find('.empty-msg-container').append($emptyMsg.show());
      } else {
        $emptyMsg.hide();
        tbody.find('.empty-msg-container').parent().remove();
      }
    });
  });
});

解决CSS不生效问题

WordPress的全局样式或DataTables默认样式可能覆盖自定义样式,按以下方式处理:

  • 使用更具体的CSS选择器提升优先级,比如结合表格ID:
    /* 针对方案1的内置提示 */
    #program-table .dataTables_empty p {
      text-align: center;
      padding: 20px;
      color: #666;
      margin: 0;
    }
    
    /* 针对方案2的容器提示 */
    #program-table .empty-msg-container p {
      text-align: center;
      padding: 20px;
      color: #666;
      margin: 0;
    }
    
  • 如果是AngularJS样式隔离导致的不生效,添加::ng-deep穿透隔离:
    ::ng-deep #program-table .empty-msg-container p {
      /* 自定义样式 */
    }
    
  • 避免使用!important,除非万不得已,优先通过选择器特异性来覆盖样式。

内容的提问来源于stack exchange,提问作者maya349

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:30:52