1

私は2つのテーブルを持っています

 <table class="first">
    <thead>
          <th> header1</td>
          <th> header2 </th>
    </thead> 
    <tbody>
           <tr>
                <td>hi</td>
                <td>hello</td>
           </tr>
    </tbody>
 </table>


 <table class="second">
    <thead>
          <th> header1</td>
          <th> header2 </th>
    </thead> 
    <tbody>
           <tr>
                <td>hi</td>
                <td>hello</td>
           </tr>
           <tr>
                <td>hi</td>
                <td>hello</td>
           </tr>
    </tbody>
 </table>

今私のjqueryパート:

  var trainingInstanceIds = ${trainingInstance.id};
  alert(trainingInstanceIds) // which prints say 1,9,  

今、2 番目のテーブルのすべての td に、trainingInstanceIds で指定された値としてタイトルを付けたい

基本的に私はこのようなものが欲しい

   <table class="second">
    <thead>
          <th> header1</td>
          <th> header2 </th>
    </thead> 
    <tbody>
           <tr>
                <td title="1">hi</td>
                <td title="9">hello</td>
           </tr>
           <tr>
                <td  title="1">hi</td>
                <td  title="9">hello</td>
           </tr>
    </tbody>
 </table>

trainingInstanceIds の値と td の数が変わります。

ここでは、既に作成されたテーブルにタイトルを追加したい

どうやってするの?

    $.each(trainingInstanceIds, function(index, value) { 

   });
4

4 に答える 4

3

関数を jQuery のattr-methodに渡すだけです。

var trainingInstanceArray = [1, 9]; 
// OR use if it's a string:
var trainingInstanceArray = trainingInstanceIds.split(',')
$('.second td').attr('title', function (index, attr) {
    return trainingInstanceArray[$(this).index()];
});​

JSFiddle での例

于 2012-08-14T10:39:49.190 に答える
2

tdID の代わりに sを反復処理すると、パフォーマンスが向上する場合があります。

var trainingInstanceArray = trainingInstanceIds.split(',');

$('.second td').each(function(index, element) {
  var $el = $(this);
  $el.attr('title', trainingInstanceArray[$el.index()]);
});

編集:すべての行にすべてのタイトルが必要だったことを見逃しました。上記を更新しました。

于 2012-08-14T10:27:10.643 に答える
1

trainingInstanceIds が配列として来る場合は、これを試してください。

$.each(trainingInstanceIds, function(index, value) {
    $('.second td:eq('+ index+')').prop('title', value);
});

または、trainingInstanceIds が文字列として来る場合に使用します

$.each(trainingInstanceIds.split(','), function(index, value) {
    $('.second td:eq('+ index+')').prop('title', value);
});

そしてこのDEMOをチェックしてください

于 2012-08-14T10:24:33.080 に答える
1
// I suppose that trainingInstanceIds is a table
$.each( $("table.second tbody tr"), function(){
    var tds = $(this).find("td");
    $.each(trainingInstanceIds, function(index, value) {
       $(tds[index]).attr("title", value);
    });
});

みたいなことを思います。ただし、属性 title は w3c に準拠していないと想定しています。

于 2012-08-14T10:28:46.940 に答える