2012-05-10 11 views
4

我想出了這個功能,編號類添加到我的表表中的行內元素中添加編號,以TDS:JQuery的錶行

$('tr td:contains(".")').each(function(i){ 
    $(this).addClass("reportcellno-" + i); 
}); 

基本上在這裏,我正在尋找任何表單元格與小數點,我想通過他們interate通過他們每行內,並添加類reportcellno-1,reportcellno-2

這工作相當好,我玩了一整天。唯一的問題是編號繼續,而不是按行進行限制。

從上面我的輸出HTML代碼:

<tr> 
<td class="reportcellno-1">10.1</td> 
<td class="reportcellno-2">5.7</td> 
</tr> 

<tr> 
<td class="reportcellno-3">10.6</td> 
<td class="reportcellno-4">10.9</td> 
</tr> 

而我其實想獲得這樣的:

<tr> 
<td class="reportcellno-1">10.1</td> 
<td class="reportcellno-2">5.7</td> 
</tr> 

<tr> 
<td class="reportcellno-1">10.6</td> 
<td class="reportcellno-2">10.9</td> 
</tr> 

所以基本上每個錶行,我要重新開始編號。我甚至不確定這是否可能。

回答

6

去了tr代替:

$('tr').each(function() { 
    $(this).children('td:contains(".")').each(function(i) { 
     $(this).addClass("reportcellno-" + i); 
    }); 
}); 

編輯:少環的方式,但可能不易閱讀:

$('tr td:contains(".")').each(function(){ 
    $(this).addClass("reportcellno-" + (+$(this).index() + 1)); 
});​ 

在這裏,我們使用的是這樣一個事實td是一個孩子trindex()返回元素相對於其同級的位置。

docs

如果沒有參數被傳遞給所述的.index()的方法,所述返回值是 指示第一元件的 jQuery對象相對於其兄弟所述內的位置的整數。元素。

+1

'。兒童()'代替'.find()'進行更好。 –

+0

@ŠimeVidas謝謝,編輯 –

+0

完美,謝謝!我喜歡第一種方法。 –

0

一個普通的js溶液,在行的偶數:

var rows = document.getElementsByTagName('tr'); 

for (var j=0, jLen=rows.length; j<jLen; j++) { 
    var cell, cells = rows[j].getElementsByTagName('td'); 

    for (var i=0, iLen=cells.length, c=0, txt; i<iLen; i++) { 
    cell = cells[i]; 
    txt = cell.innerText || cell.textContent; 

    if (txt.indexOf('.') > -1) { 
     cell.className = cell.className + ' reportcellno-' + c++; 
    } 
    } 
} 

通過表連續地編號:

var cell, cells = document.getElementsByTagName('td'); 

for (var i=0, iLen=cells.length, c=0, txt; i<iLen; i++) { 
    cell = cells[i]; 
    txt = cell.innerText || cell.textContent; 

    if (txt.indexOf('.') > -1) { 
    cell.className = cell.className + ' reportcellno-' + c++; 
    } 
}