2016-05-18 2 views
1

Ich habe vier Tabellen auf einer Seite und ich möchte den Index der Tabellenzellen in jedem separat, mit der Tabelle als übergeordnete, nicht die Reihe. Dieser Code gibt den Index innerhalb jeder Zeile zurück.Wie bekomme ich den Index eines TD in Bezug auf die TABELLE, nicht die TR

Also ich möchte die ersten drei TDs mit einer Klasse von "Ereignissen" in jeder Tabelle finden.

$('.section .calendar').each(function(){ 
$(this).find('td.events').each(function(){ 
     ind= $(this).index() 
     ind <= 2 ? $(this).css('background','#f90') : $(this).css('background','#000'); 

    }) 
    }) 

Wenn ich versuche:

ind= $('.calendar td.events').index(this) 

es zielt auf eine Index in allen vier Tabellen als Mutter

ind= $(this).index() 

Ziele der Zellen Zellen Index innerhalb jeder Reihe (von allen vier Tabellen) als sein

Die Tabellen Strukturen sind die üblichen gültig:

<table class="calendar"> 
<tr> 
    <th></th> 
    <th></th> 
    <th></th> 
    <th></th> 
    <th></th> 
    <th></th> 
    <th></th> 
</tr> 
<tbody> 
<tr> 
<td></td> 
<td class="events"></td> 
<td></td> 
<td class="events"></td> 
<td></td> 
<td></td> 
<td></td> 
</tr> 
<tr> 
<td></td> 
<td class="events"></td> 
<td></td> 
<td></td> 
<td></td> 
<td class="events"></td> 
<td></td> 
</tr> 

(... etc)

  • drei weitere identische Tabellen
+0

Haben Sie versucht, Tisch .events '? –

Antwort

0

Sie können so etwas versuchen. Es berechnet im Grunde die Anzahl der TD vor dem aktuellen.

function getTDIndex($td) { 
    var index1 = $td.prevAll("td").length; 
    var index2 = $td.closest("tr").prevAll("tr").find("td").length; 

    var index = index1 + index2; 
}; 
+0

Das scheint zu funktionieren – JohnnyP

2

Sie können die Menge aller tds als Argument Index-Methode übergeben:

$('.section .table').each(function(){ 
var childtds = $(this).find('td.events'); 
childtds .each(function(){ 
    ind= $(this).index(childtds); 
    ind <= 2 ? $(this).css('background','#f90') : $(this).css('background','#000'); 

    }) 
}) 
0

RaraituL die obige Lösung scheint zu funktionieren:

$('.section').each(function(){ 
$(this).find('td.events').each(function(){ 
    var index1 = $(this).prevAll("td").length; 
    var index2 = $(this).closest("tr").prevAll("tr").find("td").length; 
    var index = index1 + index2; 
    index <= 6 ? $(this).css('background','#f90') : $(this).css('background','#000'); 
}) 
})