使用for循环更改/增加td的标题 - JQuery

时间:2013-02-20 10:40:33

标签: jquery for-loop title html-table

我需要为表格单元格指定数字,这些数字从单元格增加到单元格。我尝试了一个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 个答案:

答案 0 :(得分: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);
});

答案 1 :(得分:1)

  

“此代码仅在循环完成后将i的最终值分配给所有单元格的标题”

那是因为在每次迭代中你都要设置每个匹配元素的属性。 (row.attr('title',i)row jQuery对象中的每个元素进行操作。)

如果你正在使用jQuery,你会发现使用它.each() method而不是传统的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() method来访问当前项目:

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

这些方法中的任何一种都会以i的{​​{1}}开头,如果您希望显示的编号以0开头,请使用i+1

答案 2 :(得分: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)
})

DEMO

答案 3 :(得分: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