2012-04-23 17 views
12

Ich habe eine einfache Tabelle, wo ich IDs für Header und IDs für Zeilen gesetzt habe. Bei einer ID für beide muss ich eine entsprechende Zelle am Schnittpunkt dieser beiden finden.Suche nach Tabellenzellen mit Zeilen- und Spalten-IDs mit jQuery

Beispiel:

<table id="tablica"> 
    <thead> 
     <th id="bla">Bla</th> 
     <th id="bli">Bli</th> 
     <th id="blu">Blu</th> 
    </thead> 
    <tbody> 
     <tr id="jedan"> 
      <td>1</td>    
      <td>2</td> 
      <td>3</td> 
     </tr> 
     <tr id="dva"> 
      <td>4</td>    
      <td>5</td> 
      <td>6</td> 
     </tr> 
     <tr id="tri"> 
      <td>7</td>    
      <td>8</td> 
      <td>9</td> 
     </tr> 
    </tbody> 
</table>​​​ 

Also, wenn ich id = "bli" und id = "dva", das bedeutet, dass ich etwas tun will mit Zellwert 5 in diesem Beispiel.

bearbeiten: Es gibt viele richtige Antworten, ich habe sie alle aufgewertet, aber leider kann ich nur eine als richtig auswählen.

Antwort

7

Hier ist meine Lösung:

var column = $('#bli').index(); 
var cell = $('#dva').find('td').eq(column); 

Und Arbeitsbeispiel auf jsfiddle: http://jsfiddle.net/t8nWf/2/

hinzugefügt alle in einer Funktion:

function getCell(column, row) { 
    var column = $('#' + column).index(); 
    var row = $('#' + row) 
    return row.find('td').eq(column); 
} 

Arbeitsbeispiel: http://jsfiddle.net/t8nWf/5/

+2

Ändern Sie $ ('# tablica'). Find ('thead'). Find ('# bli'). Index(); 'zu' $ ('# bli'). Index() '. viel schneller! – binarious

+0

danke und aktualisiert – WolvDev

3

Wenn Sie die ID der Zeile haben, können Sie die Spalte mit den Daten 5 auswählen.

$("#dva").find("td:contains(5)").css({"background-color":"red"}); 

Siehe auch this fiddle als Arbeitsbeispiel.

$("#tablica tr").find("td:contains(5)").css({"background-color":"red", "padding":"5px"}); 

Working example

+2

Ich glaube, er nicht den Wert des TD (meine Vermutung) nicht kennt. –

+0

Das stimmt, ich kenne den TD-Wert nicht. – eagerMoose

2
$('#dva > td').eq($('#bli').index()); // returns the td element 

sollte funktionieren:

EDIT Ohne die ID der Reihe zu wissen, dass Sie nur id Tabelle haben, dann können Sie auch die Zelle finden. Arbeitsbeispiel: http://jsbin.com/acevon/edit#javascript,html,live

+0

Dies gibt alle TDs im Ziel TR zurück. –

+0

Nein, tut es nicht. Überprüfen Sie Jsbin. – binarious

+0

Ich denke du hast es behoben. Die ursprüngliche Version hat nicht funktioniert: http://jsfiddle.net/sMH5K/ –

1

Dies wird Sie das TD-Element erhalten Sie als jQuery-Objekt wollen:

var thIndex = $('#tablica #bli').index(); // get index of TH in thead 
var $td = $($('#dva td').get (thIndex)); // get the TD in the target TR on the same index as is in the thead 

JSFiddle example

+0

'#tablica th # bli' ist ein ziemlich schlechter Selektor. Da eine ID eindeutig ist, können Sie nur '# bli' abfragen. – binarious

+0

Sie haben Recht, repariert es. –

Verwandte Themen