【问题标题】:Traverse Nested Tables in JQuery在 JQuery 中遍历嵌套表
【发布时间】:2011-05-15 11:42:33
【问题描述】:

需要: 我想将表中的数据转换为逗号分隔值。

问题: 一个表格单元格可能有另一个表格。 (例如,第 1 行,第 3 行包含一个表)脚本需要为嵌套表运行并且只捕获一次该列。在这里它捕获了两次“Col 3”。 嵌套表的数量未知。 它应该是一个通用脚本。

谢谢。

我的 HTML 文件:

<html>
 <head>
  <script src="http://code.jquery.com/jquery-1.4.4.min.js" type="text/javascript"></script> 
 <script src="jquery.table2csv.0.1.1.min.js" type="text/javascript"></script> 
 <script type="text/javascript">
 jQuery(function() {
  jQuery("#tableone").table2csv({
   callback: function (csv) {
    //alert(csv);
   }
  });
 });
</script>
</head>
<body>
 <table id="tableone" style="width:100%;">
  <tbody>
   <tr>
    <td>
     <div >
      Col 1
     </div>
    </td>
    <td >
     <div >
      Col 2
     </div>
    </td>
    <td >
     <div >
      <table >
       <tbody>
        <tr>
         <td >
          Col 3
         </td>
        </tr>
       </tbody>
      </table>
     </div>
    </td>
   </tr>
   <tr >
    <td >
     <div >
      Data in Col 1
     </div>
    </td>
    <td >
     <div >
      Data in Col 2
     </div>
    </td>
    <td >
     <div >
      Data in Col 3
     </div>
    </td>
   </tr>
  </tbody>
 </table>
 </body>
</html>

jquery.table2csv.0.1.1.min.js

(function($)
 {$.fn.table2csv=function(options)
  {
   var defaults=
   {
    delimiter:",",callback:function(csv)
    {
     return csv;
    } 
   };
   var settings=$.extend(defaults,options);
   return this.each(function()
   {
    var name=$(this).find("caption").text();
    var csv="";

    $(this).find("td").each(function()
    {
     csv+="\""+$(this).text().replace(/(\")/gim,"\\\"\\\"")+"\""+",";
     alert(csv);
    })  
    csv=csv.replace(/\,$/gim,"");
    settings.callback(csv,name);
   });

  }
 })(jQuery);

【问题讨论】:

    标签: jquery html csv html-table nested-table


    【解决方案1】:

    你应该重写 table2csv 脚本;而不是使用 $().find('td') 来定位

    s,你可以使用 $('tr').children('td') 来确保你得到给定行的单元格。

    注意网络上的随机

    可能包含 和其他语义内容。

    【讨论】:

      【解决方案2】:

      在包含 $('tr').children('td') 之后 我们得到的 o/p 为

      "col1","col2","col3","col3","col1 中的数据","col2 中的数据","col3 中的数据" "col1","col2","col3","col3","col1 中的数据","col2 中的数据","col3 中的数据" "col1","col2","col3","col3","col1 中的数据","col2 中的数据","col3 中的数据"

      但输出应该是 "col1","col2","col3","col1 中的数据","col2 中的数据","col3 中的数据"

      【讨论】:

      • $(this).find("tbody").each(function() { $("tr").children("td").each(function() { csv+="\ ""+$(this).text().replace(/(\")/gim,"\\\"\\\"")+"\""+settings.delimiter; //alert(csv); }); csv+="\n"; });
      猜你喜欢
      • 2016-07-29
      • 2015-05-16
      • 2015-11-24
      • 2011-04-10
      • 2020-04-19
      • 2019-08-22
      • 2018-11-21
      • 2012-11-11
      相关资源
      最近更新 更多