Willkommen auf dem Portal für Mediengestalter
|
|
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 |
|
|
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
|
|
|
|
|
sahnemuh
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Di 15.12.2009 09:24
Titel
|
|
|
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
|
|
|
|
|
Anzeige
|
|
|
kaischo
Threadersteller
Dabei seit: 06.11.2008
Ort: Müllheim
Alter: -
Geschlecht: -
|
Verfasst Di 15.12.2009 12:27
Titel
|
|
|
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
|
|
|
|
|
sahnemuh
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Di 15.12.2009 13:00
Titel
|
|
|
gah. ich habe css("height") mit height() verwechselt. schande über mich
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
|
|
|
|
|
kaischo
Threadersteller
Dabei seit: 06.11.2008
Ort: Müllheim
Alter: -
Geschlecht: -
|
Verfasst Di 15.12.2009 14:06
Titel
|
|
|
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.
|
|
|
|
|
P Vilsenburg
Dabei seit: 11.12.2009
Ort: Dortmund
Alter: 43
Geschlecht:
|
Verfasst Fr 18.12.2009 13:26
Titel
|
|
|
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.
|
|
|
|
|
|
|
|
Ä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
|
|
|
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.
|
|