当jQuery创建元素时自动递增id

时间:2014-01-08 19:22:31

标签: jquery

我有一张桌子,当我点击按钮时,我正在创建tr。和td。这非常有效,除了我需要能够将id添加到那些tr并使它们自动递增。

我的完整代码看起来像这样

 $("#moreRows").click(function () {
     var rowCount = $('table tr').length -1;
     if(rowCount >= 100)
     {
        alert('you have 100 rows');
     }else{
         $("#correctionTable").each(function () {
             var tds = '<tr>';
             jQuery.each($('tr:last td', this), function () {

                 tds += '<td>' + $(this).html() + '</td>';
             });
             tds += '</tr>';
             if ($('tbody', this).length > 0) {
                 $('tbody', this).append(tds);
                 $('tbody', this).append(tds);
                 $('tbody', this).append(tds);
                 $('tbody', this).append(tds);
                 $('tbody', this).append(tds);
             } else {
                 $(this).append(tds);
             }
         });
     } 
     return false; 
}); 

到目前为止,我尝试过这样的事情(不是我知道的完整的每个功能,只是一个例子)

var num = 5;
  $("#correctionTable").each(function () {
   var id = num++;
   var tds = '<tr id="'+id+'">';

尝试将id添加到每个循环中的原始tr。这只是为每个tr添加了6的id。

我也试过这个

var num = 5;
 $("#correctionTable").each(function () {
   tds = '<tr id="' + (++num) + '">';

和这个

var num = 5;
  $("#correctionTable").each(function () {
  ++num
   tds = '<tr id="' + num + '">';

但两项都没有效果

我也尝试在.each函数中移动该函数,它将td附加到最后一个tr,但它不喜欢我向变量添加任何内容或将该变量替换为其他任何内容。

任何帮助都会很棒,我只是被卡住了!

表明我并不疯狂的jsFiddle http://jsfiddle.net/bwHnq/33/

3 个答案:

答案 0 :(得分:0)

你永远不会实际增加num的全局值。试试这个:

var num = 5;
$("#correctionTable").each(function () {
   num++;
   tds = '<tr id="' + num + '">';

Matheus也提供了可行的解决方案。 .length()方法将返回DOM中存在的TD数量。您可以使用每个语句的内部。每次循环发生时,它都会添加一个新的TD,从而增加.length()返回的数字。

希望它有所帮助!

JSFIDDLE

答案 1 :(得分:0)

var num = 5;
$("#correctionTable").each(function () {
   tds = '<tr id="' + (++num) + '">';

答案 2 :(得分:0)

不使用ID,您可以将事件委托给TABLE级别:

$("#correctionTable").on('click','tr',function(e){
    //e.target is the clicked row
    console.log(e.target); //$(e.target) to wrap it inside jQuery
});