2012-04-13 9 views
0

Also, ich habe X Anzahl der Bilder vertikal mit in einer <ul><li><a> <img> </a></li></ul> zentriert werden (der Klassenname in der Jquery unten ist die tatsächliche <img>). Dies funktioniert sehr gut, aber ... Es nimmt nur den ersten Wert und wendet es auf den Rest der Bilder an, was dazu führt, dass der erste zentriert wird und die anderen nicht.Jquery - Vertikale Zentrierung mit der übergeordneten Höhe funktioniert. So,

Ich könnte hinzufügen, dass alle Bilder unterschiedliche Höhen und Breiten haben. Die Breiten werden betreut ab sofort, einfach durch text-align: center; auf dem anchortag mit

$(window).load(function(){ 
    var parent_height = $('.tv-list-channel-logo').parent().height(); 
    var image_height = $('.tv-list-channel-logo').height(); 
    var top_margin = (parent_height - image_height)/2; 
    $('.tv-list-channel-logo').css('margin-top' , top_margin); 
}); 

schon seit geraumer Zeit auf diesem starren und ich fehle sicherlich etwas offensichtlich.

+0

Haben Sie versucht, sie absolut innerhalb eines jeweiligen Behälters zu positionieren? – Dutchie432

+0

Ja habe ich, aber ich hätte in meinem ersten Beitrag erwähnen sollen, dass die Bilder unterschiedliche Höhen und Breiten haben. – Dennis

+0

Verwenden Sie meinen Vorschlag zusammen mit der Antwort von 'Ryan P' Below. Gehe durch jedes Bild und führe diese Berechnung mit 'each' aus. – Dutchie432

Antwort

2

Wenn die Bilder unterschiedliche Werte benötigen, müssen Sie sie durchlaufen. Versuchen Sie es mit $('.tv-list-channel-logo').each(function...). Inside .each, this bezieht sich auf das aktuelle Element.

EDIT: Hier ist ein Beispiel für .each:

// `.each` takes each selected element and calls the callback on each one 
$('.tv-list-channel-logo').each(function() { 
    // `this` refers to the current .tv-list-channel-logo element 
    var parent_height = $(this).parent().height(); 
    var image_height = $(this).height(); 
    var top_margin = (parent_height - image_height)/2; 
    $(this).css('margin-top' , top_margin); 
    // I just replaced all instances of `'.tv-list-channel-logo'` with `this` 
}); 
+0

Ich bin mir nicht ganz sicher, ob du das meinst oder nicht, aber es funktioniert nicht. 'var image_height = $ ('. tv-list-channel-logo'). jedes(). height();' – Dennis

+0

.alles nimmt einen Funktionsrückruf. Siehe die Dokumentation: http://api.jquery.com/each/ –

+0

Ich habe sicherlich etwas Wertvolles in meinem Gehirn angespannt. Ich kann mir das nicht vorstellen ... – Dennis