Mit jQuery ein Element verändern
Wenn im DOM ein Element exisitert, möchte ich damit gewisse Dinge anstellen. Zum Beispiel die Breite anpassen, es animieren, oder was auch immer. Doch wie spreche ich das Element mit jQuery eigentlich an, sofern ich nicht draufklicke oder irgendeine Aktion ausführe? Die Lösung anbei.
Szenario: Ich möchte einem DIV eine Breite geben, und zwar die Summe der Breite seiner Kinderelemente. Also unser DIV hat fünf DIVs, die gefloatet sind. Dessen Breite in Summe möchte ich dem Elternelement mitgeben. Doch wie spreche ich nun mein DIV in jQuery an? Bisher habe ich das so gemacht:
- $('#meinDiv').each(function(){
- alert('Ja, mich gibt es, stell was mit mir an.');
- });
Wie oben bereits erwähnt, möchte ich, dass das Element sich beim Aufbau der Seite schon verändert, nicht erst, wenn ich darauf rumdrücke (event “click”). Mit der Methode “each” konnte ich es ansprechen. Doch mein DIV gibt es auf der Seite nur einmal, also fand ich die Anwendung von “each” (gehe jedes Element durch) etwas zu viel des guten – unpassend.
Dank Dirk Jesse, der mir ein paar Tipps gab, habe ich ein jQuery-Plugin geschrieben, was mir analog zu “each” eine Funktion zur Verfügung stellt, mit dem ich mein Element, sofern es im DOM auftaucht, ansprechen kann – ohne Interaktion.
Packt dazu außerhalb von $(document).ready(); folgenden Code in eure Javascript-Datei:
- (function($) {
- $.fn.found = function(myFunction) {
- if(this.length) {
- myFunction.call(this);
- }
- };
- })(jQuery);
Mit meiner neuen Funktion “found” kann ich nun das Element ansprechen. Und die Funktion, die ich ihm dabei mit auf dem Weg gebe, führt meine “found”-Funktion aus.
alert('Ja, mich gibt es, stell was mit mir an.');
});
In der neuesten jQuery-Version 1.2.6 gibt es nun die Funktion, die ich hier konstruiert habe: .index(). Somit ist mein Add-On quasi hinfällig.
1 macx schrieb am 16. Mai 2008 (14:05 Uhr)
2 Alexander schrieb am 16. Mai 2008 (15:05 Uhr)
3 2meter3 schrieb am 16. Mai 2008 (15:05 Uhr)
4 macx schrieb am 16. Mai 2008 (16:05 Uhr)
5 2meter3 schrieb am 16. Mai 2008 (17:05 Uhr)
6 macx schrieb am 16. Mai 2008 (18:05 Uhr)
7 2meter3 schrieb am 16. Mai 2008 (18:05 Uhr)
8 macx schrieb am 03. Juni 2008 (12:06 Uhr)
9 alexander farkas schrieb am 01. September 2008 (00:09 Uhr)