2016-05-11 8 views
-1

Ich weiß nicht die Terminologie, aber ich hoffe, diese Erklärung macht Sinn. Ich habe einen JavaScript-Code, den ich 10 mal wiederholen möchte, jedes Mal mit einer steigenden Zahl, um jedes td in einer Tabelle zu targetieren (zuerst td dann das zweite dann das dritte und so weiter)Wiederholen Sie einen JavaScript-Code mit einer anderen Nummer in jedem Lauf

Das Ziel dieses JavaScript ist zu Passe die TD-Breite des Theads an die im Tbody an (weil ich sie über CSS mit der Position: absolut getrennt habe).

Gerade jetzt habe ich es geschafft mit dieser die Breite eines einzelnen TD zum Spiel:

var cell4 = $('#divResults tbody > td:nth-child(4)'); 
$('#divResults thead > tr > td:nth-child(4)').css({ width: cell4.width()}); 

Die einfachste, aber nicht praktisch, Art und Weise zu erreichen, die Einstellung der restlichen TDs ist die JS zu duplizieren, sondern ersetzt die Zahlen 9 mehrere Male.

Ich weiß, dass es eine Möglichkeit gibt, eine Schleife zu erstellen und jedes TD ohne manuelle Duplizierung des Codes anzusteuern, aber keine Online-Antwort zu finden scheint.

Ich schätze die Hilfe

+1

Was Sie suchen ist ein [ 'for' loop] (https://developer.mozilla.org/en- US/docs/Web/JavaScript/Referenz/Statements/für). –

+0

Ich schätze alle Kommentare und versuchte, jeden zu verwenden, um zu sehen, was am besten funktioniert Sollte noch mehr geklärt haben, jeder td im tbody hat eine andere Breite, also möchte ich jeden td mit ihren jeweiligen Breiten übereinstimmen. Daher muss ich thead td1 mit tbody td1 zusammenbringen und tbody td2 mit thead td2 und so weiter ... – Doge

Antwort

3

Statt ein bestimmtes Element ausgewählt haben, wählen Sie alle Elemente und Schleife über sie.

$('#divResults tbody > td').each(function(index) { 
    // Do some repeating code 
}); 

Link für weitere Infos https://api.jquery.com/each/

1

In Vanille JS Sie eine for-Schleife verwenden, würde dies zu erreichen. Mit jQuery können Sie einfach eine Sammlung von <td> s und Schleife über ihnen greifen .each mit

// Get the first tr's collection of td elements 
var bodyTds = $('#divResults tbody tr:first-child td'); 

// Loop over the head td's (should be th's really) 
$('#divResults thead tr td').each(function(index) { 
    // Apply the width of the body td to the head td 
    $(this).css({ width: bodyTds.eq(index).width()}); 
}); 
+0

Ich glaube, dass OP 'head.eq (index) .css (...)' "mit der TD-Breite übereinstimmen soll von der thead zu der in der tbody " –

+0

Woops, du hast recht ... das ist eigentlich der Grund, warum ich das erste Kind reingelegt habe, aber nicht den tbody und thead gewechselt habe. Danke für den Spot. –

Verwandte Themen