2010-04-30 87 views
1

我有經由DB填充的表,並將其呈現像這樣(它可以具有任何數量的指「時間」列,5列,8列,2列,等等):如何在jQuery中爲每個Table Cell設置增量CSS類?

<table id="eventInfo"> 
<tr> 
    <td class="name">John</td> 
    <td class="date">Dec 20</td> 
    <td class="**time**">2pm</td> 
    <td class="**time**">3pm</td> 
    <td class="**time**">4pm</td> 
    <td class="event">Birthday</td>     
</tr> 
<tr> 
    <td class="name">Billy</td> 
    <td class="date">Dec 19</td> 
    <td class="**time**">6pm</td> 
    <td class="**time**">7pm</td> 
    <td class="**time**">8pm</td> 
    <td class="event">Birthday</td>   
</tr> 

使用jQuery,我想經過每個錶行,並僅在表格單元格增量設置附加類的名稱,其中「類=‘時間’」,這樣的結果將是:

<table id="eventInfo"> 
<tr> 
    <td class="name">John</td> 
    <td class="date">Dec 20</td> 
    <td class="**time** **timenum-1**">2pm</td> 
    <td class="**time** **timenum-2**">3pm</td> 
    <td class="**time** **timenum-3**">4pm</td> 
    <td class="event">Birthday</td>     
</tr> 
<tr> 
    <td class="name">Billy</td> 
    <td class="date">Dec 19</td> 
    <td class="**time** **timenum-1**">6pm</td> 
    <td class="**time** **timenum-2**">7pm</td> 
    <td class="**time** **timenum-3**">8pm</td> 
    <td class="event">Birthday</td>   
</tr> 

我只能得到它來計算所有的表格單元格,其中「class ='time'」,而不是每個表格在其自己的表格行中設置。這是我嘗試過用jQuery:

$(document).ready(function() { 

    $("table#eventInfo tr").each(function() { 
      var tcount = 0; 
      $("td.time").attr("class", function() { 
       return "timenum-" + tcount++; 
      }) 
      //writes out the results in each TD 
      .each(function() { 
       $("span", this).html("(class = '<b>" + this.className + "</b>')"); 
      });  

     }); 

    }); 

不幸的是,這不僅導致:

<table id="eventInfo"> 
<tr> 
    <td class="name">John</td> 
    <td class="date">Dec 20</td> 
    <td class="**time** **timenum-1**">2pm</td> 
    <td class="**time** **timenum-2**">3pm</td> 
    <td class="**time** **timenum-3**">4pm</td> 
    <td class="event">Birthday</td>     
</tr> 
<tr> 
    <td class="name">Billy</td> 
    <td class="date">Dec 19</td> 
    <td class="**time** **timenum-4**">6pm</td> 
    <td class="**time** **timenum-5**">7pm</td> 
    <td class="**time** **timenum-6**">8pm</td> 
    <td class="event">Birthday</td>   
</tr> 

感謝您的幫助!

+0

是什麼的'span'?當你可以使用'.addClass()'時,爲什麼要混淆'.html'? http://api.jquery.com/addClass/ – dnagirl 2010-04-30 13:45:20

+0

嗨dnagirl,感謝您的詢問......以下內容僅用於我可以快速查看瀏覽器窗口中發生的情況,而不是實際問題的一部分。 (function(){(「span」,this).html(「(class ='」+ this.className +「')」); //寫出每個TD 的結果。 }); – 2010-04-30 14:23:02

回答

0

$("td.time")選擇全部表格單元格time不僅在那一行。參考該行添加爲(第二)上下文參數,就像你在其他each環做:$("td.time", this)

+0

嗨RoToRa,謝謝!我仍在使用代碼,但想讓你知道這顯然已經解決了我的問題。再次感謝! – 2010-04-30 14:25:11

0
$(document).ready(function() { 
    $("table#eventInfo tr").each(function() { 
     $(this).children('td').addClass(function (index) { 
      return 'timenum-' + (index + 1); 
     }); 
    }); 
}); 
+0

謝謝Matt,我喜歡'索引'的使用 - 謝謝你的幫助! – 2010-04-30 14:34:04