Ergebnis 1 bis 8 von 8

Thema: Höhe eines Elements

  1. #1
    TP-Veteran Avatar von alexf812
    Registriert seit
    Sep 2004
    Beiträge
    1.370

    Höhe eines Elements

    Hallo,

    der folgende Code wird ausgeführt nach Klick auf einen Link. Kann mir jemand sagen, warum in der Konsolenausgabe als Höhe immer 0 steht? Wenn ich mir $overlay ausgeben lasse steht eine korrekte Höhe drin

    HTML-Code:
    var $close = $('<span class="schliessen">[X] Schliessen</span>');
    var $overlay_content = $('<div class="overlay-content">')
                                            .load('content.php',function(){
                                             $(this).before($close);
                                            });
    var $overlay = $('<div class="overlay">');
                            
    $overlay.append($overlay_content).appendTo('body');
    console.log($close.height());

  2. #2
    TP-Supporter Avatar von Ben-
    Registriert seit
    Dec 2004
    Ort
    Berlin
    Beiträge
    480
    Weil $close irgendwie nicht ins DOM geschrieben wird (lass dir mal $("body").html() ausgeben), liegt wohl an $(this).before($close);

    Mach nen this.append($close); draus, dann gehts.

  3. #3
    TP-Veteran Avatar von alexf812
    Registriert seit
    Sep 2004
    Beiträge
    1.370
    Hi,

    im DOM muss es aber sein, denn wenn ich $close.length ausgebe erhalte ich 1. Ich kann auch auf $close.text() zugreifen und bekomme den Text angezeigt. before() habe ich genommen, damit das Element vor dem div erscheint, mit append() würde es innerhalb des div erscheinen

  4. #4
    TP-Supporter Avatar von Ben-
    Registriert seit
    Dec 2004
    Ort
    Berlin
    Beiträge
    480
    Dann wird das wohl nicht gehen, "before" (bevor) ".overlay-content" nix gibt. Ich weiß nicht, wie JQuery das intern selektiert, aber anscheinend muss im DOM erstmal was vor dem Element ".overlay-content" existieren, bevor du mit "before" was dort einbinden kannst. Aber .overlay-content wird ja erst nach irgendwo hinzugefügt.
    Code:
    var $close = $('<span class="schliessen">[X] Schliessen</span>');
    var $overlay_content = $('<div class="overlay-content">');
    var $overlay = $('<div class="overlay">');
                            
    $overlay.append($overlay_content).appendTo('body');
    $overlay_content .load('content.php',function(){$(this).before($close);});
    console.log($close.height());	alert ($("body").html());
    das hier funktioniert z.B.

    €dit: Wie gesagt, es stand vorher nicht im DOM, kann man mit firebug bei "HTML" auch sehen. Die 1 hast du zurückbekommen, weil $close als Variable existiert und text() kann scheinbar auch auf Variablen zugreifen, wenn der Inhalt HTML ist (würde auch Sinn machen, denn Jquery holt sich ja intern auch nur das HTML von der selektierten klasse/id/whatever in ne Variable und sucht den Text darin)

  5. #5
    TP-Veteran Avatar von alexf812
    Registriert seit
    Sep 2004
    Beiträge
    1.370
    Hi,

    mit deiner leztten Lösung bekomme ich nun auch eine Höhenangabe angezeigt, aber wenn ich mir $('body').html() ausgeben lasse sehe ich keinen unterschied. Das span-Tag ist in beiden Fällen nicht da.
    Was ich nicht verstehe, warum es dann auf der Seite alles korrekt angezeigt wird, dort fehlt der Link zum Schliessen nicht, das war aber ach in meiner ersten Lösung so.

    Edit: Wenn ich alert($('body').html()) entferne, dann wird mir ebenfalls keine Höhenangabe angezeigt. Also bei mir funktioniert deine Lösung genauso wie meine .-)
    Geändert von alexf812 (19.12.2010 um 17:22 Uhr)

  6. #6
    TP-Supporter Avatar von Ben-
    Registriert seit
    Dec 2004
    Ort
    Berlin
    Beiträge
    480
    Oo
    Also bei mir ist es da. Wird sowohl beim Alert angezeigt, als auch im DOM.

    Kann es sein, dass bei dir ein umschließendes
    Code:
    $(document).ready(function() {
    
    });
    fehlt?

  7. #7
    TP-Veteran Avatar von alexf812
    Registriert seit
    Sep 2004
    Beiträge
    1.370
    folgendes funktioniert bei mir: (sind nur Auszüge)

    Code:
    buildOverlay : function(content){
    
                        var $close = $('<span class="schliessen">schliessen</span>');
                        var $background = $('<div id="overlay-bg">');
    
                        $background.appendTo('body');
    
                        $('<div class="overlay">')
                            .prepend($close)
                            .append(content)
                            .appendTo('body')
                            .css({'visibility' : 'hidden'})
                            .height(function(){
    
                                // hier noch einige Berechnungen, aber $close.outerHeight() geht
    
                                $overlayContent.height($overlayHeight-$close.outerHeight()-$padding).parent().css({'visibility' : 'visible'});
    
                            });
    
                        $close.click(function(){
                            $(this).parent().empty().remove();
                            $background.remove();
                        })
    
                    },
    
    // hier dann der Content:
    $('<div class="'+this.config.classname+'">').load(this.config.content,function(){
                            overlay.buildOverlay($(this));
                        })

  8. #8
    TP-Veteran Avatar von alexf812
    Registriert seit
    Sep 2004
    Beiträge
    1.370
    Zitat Zitat von Ben- Beitrag anzeigen
    Oo
    Kann es sein, dass bei dir ein umschließendes
    Code:
    $(document).ready(function() {
    
    });
    fehlt?


    hmm... sollte da sein. Ich habe $(function(){}) genutzt, das ist ja aber das gleiche, nur in Kurzform.
    Code:
    $(function(){
          $('a').click(function(e){
               e.preventDefault();
               // hier dein Code...
          )};
    )}
    EDIT: Merkwürdig, ich habs paar mal probiert auch mal mit $(document).ready() und auch nicht bei Klick..immer das gleiche Ergebnis. Höhe 0 und das span-Tag fehlt in der Ausgabe. Also irgednwas mach ich falsch...
    Geändert von alexf812 (19.12.2010 um 17:49 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. [Positionierung] Datenbankbasierter Text - Textfluß oberhalb eines .float-elements?
    Von plexynote im Forum HTML & CSS
    Antworten: 3
    Letzter Beitrag: 02.12.2010, 15:20
  2. Antworten: 2
    Letzter Beitrag: 14.01.2007, 16:42
  3. [CSS] Problem mit Höhe eines Div´s
    Von silentium im Forum HTML & CSS
    Antworten: 2
    Letzter Beitrag: 11.04.2006, 15:14
  4. Probleme mit Anzeige eines Elements im IE
    Von Adromir im Forum HTML & CSS
    Antworten: 4
    Letzter Beitrag: 20.04.2005, 10:29
  5. Antworten: 5
    Letzter Beitrag: 16.12.2002, 16:03

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51