0

テーブルセルに番号を割り当てる必要があります。番号はセルからセルへと増加します。forloopを試しましたが、各ループの後に増分カウンターをセルのタイトルに割り当てるのに問題があります。私はこのコードを持っています-

$(function(){
var row = $('#seat_map tr:last td.freeSeat')
for(i=0; i<row.length; i++){
        row.attr('title', i);   
    }
});

このコードは、ループが完了した後のiの最終値のみを、すべてのセルのタイトルに割り当てます...タイトルに「1、2、3」などを割り当てる代わりに。おそらく、テーブルはjqueryも使用して動的に生成されることを追加する必要があります。あいまいなタイトルと説明についてお詫びします-私は最善を尽くしました!

ありがとう

4

4 に答える 4

1

.each()まあ、とにかく使うことができます

var row = $('#seat_map tr:last td.freeSeat');
$.each(row, function(index){
    $(this).attr('title', index+1);
});

しかし実際には、セレクターから直接行うことになります。

$('#seat_map tr:last td.freeSeat').each(function(index) {
    $(this).attr('title', index+1);
});
于 2013-02-20T10:42:40.393 に答える
1

「このコードは、ループが完了した後に i の最終値のみをすべてのセルのタイトルに割り当てます」

これは、反復ごとに、一致するすべての要素の属性を設定しているためです。( jQuery オブジェクトrow.attr('title',i)のすべての要素に作用します。)row

jQuery を使用している場合は、従来のループよりもその.each()メソッドを使用する方が簡単であることがわかります。for

$(function(){
    var rows = $('#seat_map tr:last td.freeSeat');
    rows.each(function(i) {
       $(this).attr('title',i);
    });
});

rows後で別の目的で使用しない限り、変数はまったく必要ありません。

$(function(){
    $('#seat_map tr:last td.freeSeat').each(function(i) {
       $(this).attr('title',i);
    });
});

forしかし、ループでそれを行うには、eq()メソッドを使用して現在のアイテムにアクセスできます。

$(function(){
    var row = $('#seat_map tr:last td.freeSeat')
    for(i=0; i<row.length; i++){
        row.eq(i).attr('title', i);   
    }
});

これらのメソッドはいずれもiatで始まるため、表示される番号付けを で開始する場合に0使用します。i+11

于 2013-02-20T10:43:04.027 に答える
1

jqueryの.each()関数を使う

.each() メソッドは、DOM ループ構造を簡潔にし、エラーを起こしにくくするように設計されています。呼び出されると、jQuery オブジェクトの一部である DOM 要素を反復処理します。コールバックが実行されるたびに、0 から始まる現在のループ反復が渡されます。さらに重要なことに、コールバックは現在の DOM 要素のコンテキストで起動されるため、キーワード this は要素を参照します。

jQuery:

$('#seat_map tr:last td.freeSeat').each(function(index){
    $(this).attr('title', index+1)
})

デモ

于 2013-02-20T10:49:58.270 に答える
0

これを試して:

$(function(){
   var row = $(document).children('#seat_map tr:last').find('td.freeSeat');
   for(i=0; i<row.length; i++){
      row.attr('title', i);   
   }
});

またはこれ:

$(function(){
   var row = $('#seat_map tr:last td.freeSeat', this);
   for(i=0; i<row.length; i++){
      row.attr('title', i);   
   }
});

あなたが言及したようにI should perhaps add that the table is dynamically generated using jquery

于 2013-02-20T10:49:51.633 に答える