Траверс Вложенные таблицы в JQuery - PullRequest
0 голосов
/ 25 ноября 2010

Потребность : Я хочу преобразовать данные в моей таблице в значения, разделенные запятыми.

Задача : Ячейка таблицы может иметь другую таблицу. (например, строка 1, ячейка 3 содержит таблицу). Сценарий должен выполняться для вложенных таблиц и захватывать столбец только один раз. Здесь он захватывает «Кол 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);

Ответы [ 2 ]

1 голос
/ 25 ноября 2010

Вы должны переписать скрипт table2csv; вместо использования $ (). find ('td') для поиска

s, вы можете использовать $ ('tr'). children ('td'), чтобы убедиться, что вы получаете ячейки данной строки.

Помните, что случайный

0 голосов
/ 25 ноября 2010

после включения $ ('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 "

...