2016-06-01 8 views
0

ich einige Code geschrieben habe 2 Spalten zusammenbrechen, wenn der Text auf der linken Seite ist länger als das Bild auf der rechten Seite:Auslösen einer Funktion auf mehrere Ereignisse

var collapsed = null; 
var banner = function() { 
    var txt = $('.banner .text').outerHeight(); 
    var image = $('.banner .main-image').outerHeight(); 
    if (txt > image) { 
     // Collapse columns 
     $('.banner').addClass('single-line'); 
     // Set the breakpoint the column collapsed at 
     if (collapsed == null) { 
      collapsed = $(window).width(); 
     } 
    } 

    // Restore the 2 columns when the browser hits the breakpoint 
    if ($(window).width() >= collapsed) { 
     $('.banner').removeClass('single-line') 
    } 
} 

Mein Problem dieser Funktion wird immer bei auszulösen die richtigen Zeiten. Dies funktioniert:

$(window).resize(banner); 

Aber keiner dieser Arbeit ...

$(window).onload(banner); // When the page first loads 
$(window).on('orientationchange', banner); // When device is rotated 

ich hier auf die falschen Spuren vollständig sein könnte, so wenden Sie sich bitte mich frei fühlen in die richtige Richtung zu weisen.

Vielen Dank im Voraus!

+0

Was meinst du mit "Aber keine dieser Arbeiten"? Wird die Größe nicht wie erwartet geändert? Wird Ihre Funktion überhaupt angerufen? – krillgar

+0

Die Funktion wird ausgelöst, die Größe wird jedoch nicht wie erwartet geändert. –

Antwort

1

in der Dokumentation von JQuery Acording, gibt es keine „onload“ -Methode für das jQuery-Objekt, stattdessen sollten Sie „ready“ verwenden:

$(window).ready(banner); 

Über diese Linie nicht gefeuert zu werden, wahrscheinlich, weil Sie "re mit dem falschen Synthax die Referenz für "on" -Methode.

.on (Ereignisse [Selektor] [Daten], handler)

so sollten Sie dies versuchen:

$(window).on('orientationchange','window', banner) 

Prost

+0

Ich habe die Methode 'onload' in' load' geändert. Ich hatte den Fehler in der Konsole bereits bemerkt. Die Funktion wird ausgelöst, ihre Größe ändert sich nicht wie erwartet –

0

auszuführen, wenn die Seite erste Last, die Sie verwenden können:

$(document).ready(function() { 
    banner(); 
}); 

In Bezug auf die orientationchange Veranstaltung, stellen Sie sicher, dass Sie die jquery.mobile.js verwenden (https://api.jquerymobile.com/orientationchange/)

Verwandte Themen