0

次の HTML テーブルがあります。

<tbody>
   <tr>
      <th>Actions</th><th>Contact Type</th><th>Contact</th><th>Call Order</th>  <th>Text</th>
   </tr>
   <tr id="rulesegment_1">
       <td><input type="button" value="Remove" class="removeruleset"></td>
       <td class="contact_type" id="contact_type1">6</td>
       <td id="contact_details1">1234</td>
       <td class="call_order" id="call_order1">1</td>
       <td class="textm" id="textm1">false</td>
    </tr>
    <tr id="rulesegment_2">
       <td><input type="button" value="Remove" class="removeruleset"></td>
       <td class="contact_type" id="contact_type2">4</td>
       <td id="contact_details2">123424234</td>
       <td class="call_order" id="call_order2">1</td>
       <td class="textm" id="textm2">false</td>
   </tr>
  </tbody>

テーブルからすべてのデータを抽出し、最終的に次のような文字列にする必要があります。

  "6,1234,1,false~4,123424234,1,false~"

これを行う最善の方法は何ですか?これを行うjQueryのメソッド/関数はありますか?

4

2 に答える 2

1

私はお勧めします:

// select all the 'td' elements:
var str = $('td').filter(function(){
    /* filter those elements to keep only those the
       length of whose trimmed text is greater than zero:
    */
    return $.trim($(this).text()).length > 0;
}).map(function(){
    // trim the text of those kept 'td' elements, and return it
    return $.trim($(this).text());
/* store it in an array (using 'get()'), and join those array
   elements together with commas:
/*
}).get().join(',');

console.log(str);

JS フィドルのデモ

チルダ ( ~)を含めるように上記を更新しました。

var str = $('td').filter(function(){
    return $.trim($(this).text()).length > 0;
}).map(function(){
    var self = $(this),
        text = self.text();
    return !self.next().length ? text + '~' : text;
}).get().join(',');

console.log(str);

JS フィドルのデモ

参考文献:

于 2013-08-22T18:32:46.090 に答える
0

次のように、行を処理してからセルを処理するために、$.map 呼び出しをチェーンするだけです。

// Get all the tr's that have an id attribute
$.map($('tr[id]'),function(node){

    // Inside of each row, exclude the cells that have an input.
    return $.map($('td', node).not(':has(input)'), function(td){
         return $(td).text();
    }).join(','); // Join the text with a comma
}).join('~'); // Join the rows with a tilde

テストは次のとおりです。

http://jsbin.com/avUb/1/edit

于 2013-08-22T19:45:38.630 に答える