Finden Sie die Breite des untergeordneten Bildes und wenden Sie es auf das enthaltende übergeordnete div jquery an

Lesezeit: 3 Minuten

ich habe ein <img> und einige <p>ist in a <div>.

Ich möchte die Breite des untergeordneten img abrufen und auf die Breite des übergeordneten div anwenden, damit die Textabsätze auf die gleiche Breite wie das img umbrechen.

Ich möchte dies für mehrere Iterationen auf derselben Seite tun können.

Hintergrund:
Ich entwickle ein WordPress-Theme, das das Maurer-jquery-Plugin verwendet (http://desandro.com/resources/jquery-masonry). Mein Theme hat etwas mit dem Gridalicious-Theme gemeinsam (http://suprb.com/apps/gridalicious), aber die Postbreiten und -größen werden durch die Bildbreite bestimmt und sind nicht einheitlich.

Mein HTML/CSS ist makellos, aber mein Jquery/Javascript ist ziemlich wackelig – aber wenn ich ein paar Hinweise bekommen kann, sollte ich damit arbeiten können.

Jede Hilfe wird wirklich geschätzt.

Finden Sie die Breite des untergeordneten Bildes und wenden Sie
Ryan Kinal

Das funktioniert perfekt. Beachten Sie, dass Sie $(window).load() anstelle von $(document).ready() verwenden müssen, da $(document).ready() ausgelöst wird, bevor die Bilder tatsächlich geladen werden, und die Bilder daher keine Breite haben.

$(window).load(function() {
    $('div').each(function() {
        $(this).width($(this).find('img').width());
    });
});

Bearbeiten: Beachten Sie, dass dies die Breite von der Basis ausmacht Erste Bild in der div. Ändern Sie einfach den Index ([0]), um es auf einem anderen Bild im div zu basieren.

Bearbeiten 2: Wendete Johns Korrektur auf die Funktion .width() an.

  • Das ist ein bisschen klobig. Zum Beispiel gibt width() sowieso nur die Breite des ersten ausgewählten Elements zurück, also die gesamte Deklaration von img ist überflüssig. Außerdem ist das Laden im Fenster nicht gut, da es darauf wartet, dass die gesamte Seite vollständig geladen ist. Das Einfügen des Skripts in die Fußzeile funktioniert einwandfrei.

    – John P. Bloch

    7. Juli 10 um 13:56 Uhr

  • @John Du hast Recht mit width(). Die Fensterlast ist jedoch erforderlich. Wir wollen zu warten, bis der gesamte Inhalt geladen ist, denn wenn die Breite der Bilder nicht ausdrücklich angegeben ist, weiß der Browser nicht, wie breit das Bild ist, selbst wenn das Element geparst wurde.

    – Ryan Kinal

    7. Juli 10 um 14:27 Uhr

  • Hallo Leute, danke für die Hinweise. Ich habe das Beispiel “Proof of Concept”, mit dem ich arbeite, hier hochgeladen, wenn Sie interessiert sind: www.simonlast.co.uk/example/04.html Scheint zu funktionieren, obwohl es scheint, dass es einige unerwartete gibt Interaktion mit Mauerwerk, aber ich denke, das ist etwas, das ich optimieren kann. Danke für die Hilfe, sehr geschätzt.

    – der andere simon

    7. Juli 10 um 15:40 Uhr

  • Hallo zusammen, Wenn Sie sich dieses Beispiel ansehen: www.simonlast.co.uk/example/04.html können Sie feststellen, dass alles in FF, Chrome und Safari gut läuft, aber ich erhalte die Fehlermeldung „Ungültiges Argument“ in IE8. Es scheint etwas mit dem übergeordneten Skript zur Größenänderung zu tun zu haben. Gibt es Hinweise darauf, warum? Und wie kann man es beheben?

    – der andere simon

    8. Juli 10 um 14:13 Uhr

Dadurch werden alle divs auf der Seite gefunden und ihre Breite gleich der Breite ihres untergeordneten img-Elements gesetzt.

 $('.divselector').attr('width', $(this).find('img').attr('width'))

  • Stellen Sie einfach sicher, dass Sie den Divs eine Klasse hinzufügen und diese verwenden, um die Divs auszuwählen. Andernfalls gilt dies für ALLE Divs im DOM.

    – John P. Bloch

    7. Juli 10 um 13:23 Uhr

1643795952 594 Finden Sie die Breite des untergeordneten Bildes und wenden Sie
TonRay

Sie müssen dafür überhaupt kein Javascript verwenden. Wenn Sie das Bild und das p in untergeordnete Divs einfügen, kann dies wie in Chris ‘Lösung rein in CSS erfolgen (hier ist das JSFiddle: http://jsfiddle.net/glee/qs8GJ/ auf die folgende SO-Frage: css – verkleinern Sie ein übergeordnetes div, um es an die Breite eines untergeordneten Elements anzupassen, und beschränken Sie die Breite des anderen untergeordneten Elements

Der Trick besteht darin, das übergeordnete Div auf …

display: table-cell;

das Bild div zu …

display: table-row;
width: 1px;

…und das div mit dem Absatztext bis

display: table-cell;
width: 1px;

Funktioniert wie Charme!

.

739730cookie-checkFinden Sie die Breite des untergeordneten Bildes und wenden Sie es auf das enthaltende übergeordnete div jquery an

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy