javascript - DataTables javascript 无法应用于重复表

标签 javascript php jquery datatables

我有一个表函数(table_view.php)

<!DOCTYPE html>
<html>
    <head>
 <link rel="stylesheet" type="text/css" href="test_coding_rosa/table_design2.css">


    </head>

<body>


<?php
$row_id="";
if($_GET['page']==1 || isset($_GET['page'])==false){
    $row_id=1;
}elseif (isset($_GET['page']) && $_GET['page']>1) {
    $row_id=($_GET['page']-1)."1";
}

$doc = JFactory::getDocument();

$doc->addScript('http://code.jquery.com/jquery-1.11.0.min.js');
$doc->addScript('http://datatables.net/download/build/nightly/jquery.dataTables.js');

$doc->addScriptDeclaration('
    jQuery(document).ready( function () {
        jQuery("#main-table").DataTable();
    });
');


?>
<h1><?php echo $this->title ?></h1>

<table id="main-table" border="<?php echo $this->tableBorder ?>" class="display" <?php if(!empty($this->tableWidth)) echo 'width="'.$this->tableWidth.'"';?> >
<thead>
  <?php 
  if(!$this->hideHeaderTable)
  {

      if($_GET['t']!='maklumat_ringkas'){
      echo "<tr><th width='10px'>Bil</th>";
      }


      foreach($this->tableData[0] as $key=>$tableHeader)
      {
          ?>
        <th width="<?php echo $this->tableData[1][$key] ?>" scope="col"><?php echo $this->tableData[0][$key] ?></th>
        <?php
      }
      ?>
      </tr>
      </thead>
  <?php
  }


  $lenData = count($this->tableData);

  for ($j=3;$j < $lenData; ++$j)
  {
      ?>
      <tbody>
      <tr class="centertable" <?php if($j % 2==1) echo 'bgcolor="#EFF4FB"'?>><?php if($_GET['t']!='maklumat_ringkas'){echo "<td>".$row_id++."</td>";}?>
          <?php 
          foreach($this->tableData[0] as $key=>$tableHeader)
          {
              ?>
            <td width="<?php echo $this->tableData[1][$key] ?>" <?php echo $this->tableData[2][$key] ?>><?php echo stripslashes($this->tableData[$j][$key]) ?></td>
            <?php
          }
          ?>
      </tr>
      </tbody>
      <?php
  }

  ?>

</table>
</body>
</html>

此 table_view.php 是站点中所有数据的默认表。如下图所示,table_view.php 调用了多个表。

这里的问题是,我想使用 DataTables.net 来包含表格的分页。但是,只有第一个表已成功使用 DataTables.net 插件实现。

enter image description here

如何在所有表上实现它?由于所有表都是从同一个函数文件 (table_view.php) 调用的,因此表 ID 是相同的。

更新声明

$doc = JFactory::getDocument();

$doc->addScriptDeclaration(" 
    jQuery('[id='main-table']').each(function(i,e) {
    var id=jQuery(this).attr('id');
    jQuery(this).attr('id', id+'_'+i);
    jQuery(this).addClass('datatable-identifier');
}); ");

$doc->addScript('http://code.jquery.com/jquery-1.11.0.min.js');
$doc->addScript('http://datatables.net/download/build/nightly/jquery.dataTables.js');



$doc->addScriptDeclaration('
    jQuery(document).ready( function () {
    jQuery(".datatable-identifier").dataTable();
} );

最佳答案

多个元素具有相同的 id 是一个非常坏的习惯:) 你真的应该尽量避免它。尽管 HTML 是宽容的,但当您尝试访问 javascript 中的元素时,它会导致各种问题。

如果无法避免,您可以在调用dataTable()之前运行以下函数:

jQuery('[id="main-table"]').each(function(i,e) {
    var id=jQuery(this).attr('id');
    jQuery(this).attr('id', id+'_'+i);
    jQuery(this).addClass('datatable-identifier');
});

这会将表 ID 重命名为 main-table_1main-table_2 等。 datatable-identifier 类只是初始化 dataTables 时使用的虚拟类,请将代码更改为:

jQuery(document).ready( function () {
   jQuery(".datatable-identifier").dataTable();
});

关于javascript - DataTables javascript 无法应用于重复表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21720015/

相关文章:

javascript - 如果在 JavaScript 函数中声明参数没有被使用,会降低性能吗

php - JWT 解码 try catch

javascript - 如何动态读取本地文件?

php - 测试PHP/jQuery/xHTML/CSS程序员…设置实时多用户(安全?)测试环境的最佳方法

javascript - Rails braintree 在输入框的 focusout 上捕获错误

Javascript:无法在原型(prototype)函数中调用函数

javascript - 实习生 - 定义不同的命令/参数来运行不同的测试

jquery - 使用 jquery 操作 css 元素

javascript - 加载 Facebook 像素异步

jquery - Bootstrap 删除警报的不透明度