mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 28.03.2024 21:56 Benutzername: Passwort: Auto-Login

Thema: jQuery ignoriert einfach if-Funktion vom 14.12.2009


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> jQuery ignoriert einfach if-Funktion
Autor Nachricht
kaischo
Threadersteller

Dabei seit: 06.11.2008
Ort: Müllheim
Alter: -
Geschlecht: -
Verfasst Mo 14.12.2009 20:08
Titel

jQuery ignoriert einfach if-Funktion

Antworten mit Zitat Zum Seitenanfang

Hi,

Zunaechst einmal danke dafuer, dass Ihr euch zeit für mein Anliegen nehmt.
Ich moechte gerne mein jQuery-Script (mit jquerytimers plugin) durch eine if-Bedingung steuern. Habe aber das Problem, sobald ich versuche eine Funktion per if zu steuern, wird die if einfach ignoriert, d.h. die everyTime-Schleife wird durchlaufen, obwohl height != 125px.
Waere super wenn jemand weiter wuesste.

Code:

$(document).ready(function() {
if ($("#paper_green").css('height') == '125px') {
 $(this).click(function(){
  var rc = 0;
  var lc = -480;
  $("#paper_red_right").everyTime(40, function(){
   $(this).css({
    'backgroundPosition' : rc
   });
   rc = rc - 20;
  }, 25);
  $("#paper_red_left").everyTime(40, function(){
   $(this).css({
    'backgroundPosition' : lc
   });
   lc = lc + 20;
  }, 25);
 });
}
});


Zuletzt bearbeitet von kaischo am Mo 14.12.2009 20:10, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
sahnemuh

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht: Männlich
Verfasst Di 15.12.2009 09:24
Titel

Antworten mit Zitat Zum Seitenanfang

height() liefert eine integer (ganzzahl) von pixeln ohne die angabe einer maßeinheit zurück.

Code:
($("#paper_green").css('height') == 125)


am besten lässt du dir mal per console.debug($("#paper_green").css('height')) solche values ausgeben, dann siehst du auch, dass kein "px" dahinter steht.


Zuletzt bearbeitet von sahnemuh am Di 15.12.2009 09:26, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
kaischo
Threadersteller

Dabei seit: 06.11.2008
Ort: Müllheim
Alter: -
Geschlecht: -
Verfasst Di 15.12.2009 12:27
Titel

Antworten mit Zitat Zum Seitenanfang

danke fuer deine antwort... nur leider ist mein problem damit nicht gelöst ... selbstverständlich habe ich es mit dem integer versucht, aber dann wird die schleife erst garnicht durchlaufen ... also die bedingung scheinbar nicht erfüllt.

der firebug debuger gibt folgendes aus:
Code:

>>> console.debug($("#paper_green").css('height'))
125px                                               site (Zeile 71)


Zuletzt bearbeitet von kaischo am Di 15.12.2009 12:28, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
sahnemuh

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht: Männlich
Verfasst Di 15.12.2009 13:00
Titel

Antworten mit Zitat Zum Seitenanfang

gah. ich habe css("height") mit height() verwechselt. schande über mich Lächel
eigentlich sollte das dann so funktionieren.

hast du irgendwo ein beispiel online?

mal abgesehen davon:
$(this).click() wäre in deinem fall wohl document.click und nicht #paper_green, da es in der $(document).ready funktion ohne weiteren bezug steht - das ganze geschieht also bei jedem klick innerhalb des dokuments. ist das so gewollt?


Zuletzt bearbeitet von sahnemuh am Di 15.12.2009 13:01, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
kaischo
Threadersteller

Dabei seit: 06.11.2008
Ort: Müllheim
Alter: -
Geschlecht: -
Verfasst Di 15.12.2009 14:06
Titel

Antworten mit Zitat Zum Seitenanfang

es ist gewollt dass die everyTime-schleife nur durchlaufen wird wenn man auf die <div id="green_paper" /> klickt, und auch nur wenn fuer diese height:125px; gilt. Anderenfalls soll die schleife nicht durchlaufen werden.

Hier mal ein wenig mehr code:

Code:

HTML:

<div id="main">
         <div id="paper_white">
             <div id="paper_white_content"></div>
         </div>
         <div id="paper_purple">
            <div id="paper_purple_content"></div>
            <div id="paper_purple_left"></div>
            <div id="paper_purple_right"></div>
         </div>
         <div id="paper_green">
            <div id="paper_green_content"></div>
            <div id="paper_green_left"></div>
            <div id="paper_green_right"></div>
         </div>
         <div id="paper_red">
            <div id="paper_red_content"></div>
            <div id="paper_red_left"></div>            
            <div id="paper_red_right"></div>
         </div>
      </div>

jQuery:

$(document).ready(function() {

   $("#paper_purple").click(function(){
      var rc = 0;
      var lc = -480;
      $("#paper_red_right").everyTime(40, function(){
         $(this).css({
            'backgroundPosition' : rc
         });
         rc = rc - 20;
      }, 24);
      $("#paper_green_right").everyTime(40, function(){
         $(this).css({
            'backgroundPosition' : rc
         });
         rc = rc - 20;
      }, 24);
      $("#paper_red_left").everyTime(40, function(){
         $(this).css({
            'backgroundPosition' : lc
         });
         lc = lc + 20;
      }, 24);
      $("#paper_green_left").everyTime(40, function(){
         $(this).css({
            'backgroundPosition' : lc
         });
         lc = lc + 20;   
      }, 24);
   });
   
   if ($("#paper_green").css('height') == '125px') {
      $("#paper_green").click(function(){
         var rc = 0;
         var lc = -480;
         $("#paper_red_right").everyTime(40, function(){
            $(this).css({
               'backgroundPosition' : rc
            });
            rc = rc - 20;
         }, 25);
         $("#paper_red_left").everyTime(40, function(){
            $(this).css({
               'backgroundPosition' : lc
            });
            lc = lc + 20;
         }, 25);
      });
   }
   
   $("#paper_red").click(function(){
      var rc = -480;
      var lc = 0;
      $("#paper_red_right").everyTime(40, function(){
         $(this).css({
            'backgroundPosition' : rc
         });
         rc = rc + 20;
      }, 24);
      $("#paper_red_left").everyTime(40, function(){
         $(this).css({
            'backgroundPosition' : lc
         });
         lc = lc - 20;
      }, 24);
   });
   $("#paper_red").click(function(){
      var rc = -480;
      var lc = 0;
      $("#paper_green_right").everyTime(40, function(){
         $(this).css({
            'backgroundPosition' : rc
         });
         rc = rc + 20;
      }, 24);
      $("#paper_green_left").everyTime(40, function(){
         $(this).css({
            'backgroundPosition' : lc
         });
         lc = lc - 20;
      }, 24);
   });
});


PS: Das jQuery ist noch sehr unsauber, mir gehts erstmal nur um den bereich mit der if-bedingung ... der muss funktionieren.
  View user's profile Private Nachricht senden
P Vilsenburg

Dabei seit: 11.12.2009
Ort: Dortmund
Alter: 43
Geschlecht: Männlich
Verfasst Fr 18.12.2009 13:26
Titel

Antworten mit Zitat Zum Seitenanfang

Hi,

das mit der height() kann leider so, bzw. nur am Anfang funktionieren.

Der Code
Code:
   if ($("#paper_green").css('height') == '125px') {

wird nur beim initialen Start also beim Laden des Dokumentes überprüft. Danach nicht mehr. Bei den clicks verhält sich das ganze natürlich anders, weil dort ein Listener von jQuery initiiert wird, der "lauscht" ob geklickt wurde.

Wenn du es mit der Höhe machen willst, solltest du das ganze einfach anders rum machen. Also zum Beispiel so:
Code:

$("#paper_green").click(function(){
   if ($("#paper_green").css('height') == '125px') {
      // tue irgendwas
   } else {
      // tue was anderes oder auch gar nichts
   }
}

Ich hoffe ich konnte dir weiterhelfen.
  View user's profile Private Nachricht senden
 
Ähnliche Themen jQuery get Funktion im IE9
[jQuery] toggle(); Funktion zurücksetzen
jQuery Status einer Funktion
[jquery] scrollable-Funktion deaktivieren?
jQuery Funktion in anderem Frame ausführen
jQuery-Funktion HTML-seitenübergreifend aufrufen
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.