zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Jquery: onResize bestimmte Höhe?

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 11.02.2010, 17:47
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 30.07.2009
Beiträge: 469
sepp88 befindet sich auf einem aufstrebenden Ast
Standard Jquery: onResize bestimmte Höhe?

Hallo Leute,

ich versuche gerade folgendes zu realisieren...wenn das Browserfenster kleiner ist, als 790px in der Höhe, soll eine Infobox (ein div mit der id="info") auf top:30px gesetzt werden und eine toggle-funktion aktiviert werden, die das gleiche Div beim Klicken nach nach unten oder nach oben schiebt.
Das Ganze soll aber nur in Kraft treten wenn das Fenster unter 790 ge-resized wird. Sonst soll das #info div auf die höhe 250 gesetzt werden.
PHP-Code:
    $(window).resize(function() {
        var 
height_window = $(window).height();
        if (
height_window 790) {
                
                    $(
"#info").css('top''30px');
                    $(
"#info").css('cursor''pointer');
                    
                $(
'#info').toggle(function() {
                    $(
"#info").stop().animate({top'250px'}, 'fast');
                }, function() {
                    $(
"#info").stop().animate({top'30px'}, 'fast');
                });

        } else {

                $(
"#info").css('cursor''default');
                $(
"#info").stop().animate({top'250px'}, 'fast'); 

        }    
    });
    $(
window).resize(); 
Es funktioniert ansatzweise ganz gut, aber irgendwie wird die resize Funktion gefeuert auch wenn ich außerhalb der 790 px bin. Was mach ich denn da falsch?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 11.02.2010, 18:51
Benutzerbild von hemfrie
Administrator
XHTMLforum-Kenner
 
Registriert seit: 18.12.2003
Ort: Düsseldorf
Beiträge: 2.777
hemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannt
Standard

Hallo Sepp,

verstehe nicht ganz was das Problem ist.

resize() ist ein Event-Handler und natürlich wird das Event bei jedem Resize ausgelöst (auch wenn die Höhe > 790px ist).


Das $(window).resize(); am Ende hat keine Funktion, das kann weg.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 11.02.2010, 19:03
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 30.07.2009
Beiträge: 469
sepp88 befindet sich auf einem aufstrebenden Ast
Standard

kann ich mein Problem beim Vergrößern/Verkleinern des Fensters dann anders beheben?

Was ich erreichen will. Wenn die Browserfensterhöhe größer als 790px ist, soll gar nichts passieren. Das #info div soll auf der höhe 250px stehen und NICHT klickbar sein, also keine Togglefunktion.

Wenn das Fenster allerdings unter 790px verkleinert wird, soll das #info div nach oben sliden (top:30px) und die toggle funktion aktiv werden. Die toggle funktion soll bei klick bewirken, dass das #info div auf die 250px position slided, bei erneutem klick soll es wieder auf 30px sliden.

Wenn das Fenster dann wieder vergrößert wird, soll das #info div wieder egal auf welcher höhe es sich gerade befindet (30px oder 250px) auf die position 250px sliden und die toggle funktion soll wieder deaktiviert sein.
Mit Zitat antworten
  #4 (permalink)  
Alt 11.02.2010, 19:09
Benutzerbild von hemfrie
Administrator
XHTMLforum-Kenner
 
Registriert seit: 18.12.2003
Ort: Düsseldorf
Beiträge: 2.777
hemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannt
Standard

Der toggle Event-Handler bleibt bei Dir im Moment auch bei bei einer Höhe > 790px bestehen.

Du musst Dein $('#info') mit .unbind() davon befreien, damit die toggle Funktion bei der Höhenüberschreitung nicht weiter ausgeführt wird.

javascript:
PHP-Code:
var infobox = $('#info');

$(
window).resize(function() {
    var 
height_window  = $(window).height();
    
    if (
height_window  790) {                             
        
infobox.css({'top':'30px','cursor':'pointer'});
     
        
infobox.toggle(function() {
               $(
this).stop().animate({top'250px'}, 'fast');
        }, function() {
               $(
this).stop().animate({top'30px'}, 'fast');
        });
     } else {             
        
infobox.stop().unbind().css({'cursor':'default'})
               .
animate({top'250px'}, 'fast');
    }    
}); 

Geändert von hemfrie (11.02.2010 um 19:24 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 11.02.2010, 20:16
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 30.07.2009
Beiträge: 469
sepp88 befindet sich auf einem aufstrebenden Ast
Standard

Danke, super!

Kann ich per jquery auch abfragen, ob ein Element z.b. einen bestimmen Wert eines CSS Attributes hat?

Also quasi (pseudocode)

if (infobox.css({'top' == '250px'}) ...
Mit Zitat antworten
  #6 (permalink)  
Alt 11.02.2010, 20:49
Benutzerbild von hemfrie
Administrator
XHTMLforum-Kenner
 
Registriert seit: 18.12.2003
Ort: Düsseldorf
Beiträge: 2.777
hemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannt
Standard

Ja, das geht. Die Syntax sieht wie folgt aus:

Ein Beispiel

javascript:
PHP-Code:
$('.blub').css({'top':'250px','background':'green'});

if($(
'.blub').css('top') == '250px'){
   
alert('true');   

Mit Zitat antworten
  #7 (permalink)  
Alt 11.02.2010, 21:17
Benutzerbild von hemfrie
Administrator
XHTMLforum-Kenner
 
Registriert seit: 18.12.2003
Ort: Düsseldorf
Beiträge: 2.777
hemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannt
Standard

Das Resize-Event feuert übrigens sehr häufig. Es könnte daher unter Umständen sinnvoll sein, einen kleinen Timer einzubauen, damit die Resize Aktionen nicht zu oft aufgerufen werden.

Beispiel-Code: Resize Window - jsFiddle - Online Editor for the Web (JavaScript, MooTools, jQuery, Prototype, YUI, Glow and Dojo, HTML, CSS)

Achte auf die Counter-Zahl in der Infobox - Screenr - @xhtmlforum: jQuery resize mit setTimeout

Wenn Du das ganze ohne setTimeout ausprobierst, wird der Counter um einiges weiter hochzählen. Musst Du mal checken, welches Setting für Dich am Besten passt.

Geändert von hemfrie (11.02.2010 um 21:21 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 11.02.2010, 21:28
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 30.07.2009
Beiträge: 469
sepp88 befindet sich auf einem aufstrebenden Ast
Standard

Tausend Dank! echt spitze!
Mit Zitat antworten
  #9 (permalink)  
Alt 11.02.2010, 21:33
Benutzerbild von hemfrie
Administrator
XHTMLforum-Kenner
 
Registriert seit: 18.12.2003
Ort: Düsseldorf
Beiträge: 2.777
hemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannt
Standard

gern geschehen
Mit Zitat antworten
Sponsored Links
Antwort


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
DIV: Ausfüllen restlicher Höhe bei weiterem DIV mit fixer Höhe danoman CSS 5 24.04.2011 18:38
JQUERY: Bestimmte Anzahl von Bilder einblenden sturmi2 Javascript & Ajax 0 26.01.2011 17:35
Divv 100% Höhe mit Hintergrundbild Gsicht CSS 0 24.03.2009 08:30
JQuery + Wordpress VoinG Javascript & Ajax 0 29.12.2008 16:03
Tablle mit 100% Höhe in IE Be1er0ph0r CSS 4 03.03.2007 16:15


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:24 Uhr.