jQuery-Effekte mit NICHT unterstützten Argumenten

TIMS_Ralf

Erfahrenes Mitglied
Hallo Forum!
Bastle mir eine allgemeine Funktion, die jQuery-Effekte mittels Parametern ausführen soll, dazu eine Frage zu den "Innereien" von jQuery:
Kann ich jQuery-Effekten GENERELL auch solche Argumente übergeben, die lt. jQuery-API jeweils nicht vorgesehen sind - und was passiert dann "intern" bei jQuery? Werden nicht unterstützte Argumente übersprungen / nicht ausgeführt, oder kann es zu Fehlern kommen?

Am Beispiel "clip": Der Clip-Effekt kennt lt. jQuery-API nur das Argument { direction: "up" | "right" | "down" | "left" }:

Code:
$("#myDiv").toggle( "clip",
{ direction: "up" },
500 );

Übergebe ich dem Clip-Effekt die Argumente anderer Effekte, die vom Clip-Effekt nicht unterstützt werden, scheint das wohl trotzdem zu laufen - wobei die Argumente wohl nur nicht berücksichtigt / ausgeführt werden (?). Im Beispiel die Argumente "distance" und "times" für den Clip-Effekt, die es im "Bounce-Effekt" gibt:

Code:
// Clip mit nicht unterstützen Argumenten "distance" und "times":
$("#myDiv").toggle( "clip",
{ direction: "up", distance: 100, times: 5 },
500 );

// Bounce
$("#myDiv").toggle( "bounce",
{ direction: "up", distance: 100, times: 5 },
500 );

Bei "clip" funktioniert es. Gilt das auch GENERELL bei ALLEN anderen Effekten und ALLEN andern, möglichen Argumenten von jQuery-Effekten?

Danke vorab!
Ralf
 
Zuletzt bearbeitet:
Hallo Ralf,

ich glaube nicht, dass jQuery da explizit überprüft, dass wirklich nur die genutzten Attibute vorhanden sind. Eine endgültige Antwort wirst du nur in jQuery's Quelltext finden: https://github.com/jquery/jquery

Aber auch wenn dir der Quelltext diese These bestätigt, würde ich mich nicht darauf verlassen. Was passiert in zukünftigen Versionen? Eine solche Änderung ist zwar eher unwahrscheinlich, aber wieso möchtest du überhaupt Attribute an jQuery weitergeben, die nicht genutzt werden?
 
Hallo ComFreak,
und erstmal danke für die schnelle Antwort!
Klar, ich könnten den jQuery-Source durchforsten oder sämtliche Varianten durchprobieren... vielleicht weiß es aber jemand, ohne dass ich tagelang abtauchen muß :)

Wozu? Es soll eine Funktion werden, die alles als Parameter an jeden Effekt übergibt. Am einfachsten wäre es, wenn ich der Funktion alle Argumente als Parameter übergebe, den jQuery-Effekt dann vollständig ( außer "transfer" ) zusammenbaue, etwa so:

Code:
// Alle Argumente für jQuery-Effekte (außer transfer):
$("myDiv").toggle( "drop",
{ direction: "up", distance: 20, times: 3, pieces: 5, size: 100, horizFirst:true, color: "#fff", origin:["left", "bottom"], percent: 20, scale: 120
}, 1000 );

Wenn dann nur die Argumente berücksichtigt würden, die der jeweilige Effekt auch kennt ( = alles andere ignoriert), dann wäre das kurz und elegant machbar. Alle Varianten und Kombinationen durchexerzieren macht natürlich keinen Sinn - dann brauchts da keine function mehr :)
Bei zukünftige Versionen klar... dann muß ich das Script anpassen.

Vielleicht weiß es jemand direkt oder hatte / kennt diese Problematik schon... ?
 
Ich habe leider immer noch nicht verstanden, was der eigentliche Anwendungsfall ist. Vielleicht lässt sich ja eine einfachere Lösung finden.
 
Zurück