Ich dachte, ich mache das richtig, aber es funktioniert nicht. Ich denke ich bin dumm ...
function expand(){
var wide = $(this).css('width');
var high = $(this).css('height');
var newwide = wide * 10;
var newhigh = high * 10;
$(this).animate({'width':newwide,'height':newhigh}, 2000);
}
$('.object1').expand();
Ich möchte nur diese 'expand'-Funktion auf dem div mit der Klasse' object1 'ausführen. Was mache ich falsch?
Vielen Dank
3 Antworten
In jQuery gehen Sie folgendermaßen vor, um eine benutzerdefinierte Funktion hinzuzufügen:
(function($){
$.fn.myFunction = function() {
//Custom Function
}
})(jQuery);
Ihr Code sollte also folgendermaßen aussehen:
(function($){
$.fn.expand = function() {
var wide = $(this).css('width');
var high = $(this).css('height');
var newwide = wide * 10;
var newhigh = high * 10;
$(this).animate({'width':newwide,'height':newhigh}, 2000);
}
})(jQuery);
Mehr erfahren
Versuchen Sie, Ihren Code so umzuschreiben:
function expand($this){
var wide = $this.css('width');
var high = $this.css('height');
var newwide = wide * 10;
var newhigh = high * 10;
$this.animate({'width':newwide,'height':newhigh}, 2000);
}
expand($('.object1'));
Woher sollte das $
Objekt wissen, dass es jetzt eine expand()
Methode hat?
Wenn Sie hier wirklich ein jQuery-Plugin möchten (so nennen sie es, wenn Sie etwas an das jQuery-Objekt anhängen), müssen Sie es an $.fn
anhängen:
$.fn.expand = expand // as you defined it earlier
Das willst du mit ziemlicher Sicherheit nicht. Was schafft, was Sie erreichen wollten, ist die Angabe von $('.object1')
als Parameter für expand()
:
function expand($element){
var wide = $element.css('width');
var high = $element.css('height');
var newwide = wide * 10;
var newhigh = high * 10;
$element.animate({'width':newwide,'height':newhigh}, 2000);
}
expand($('.object1'));