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

1
bboybeatle 13 Aug. 2015 im 17:26

3 Antworten

Beste Antwort

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

4
Jacob Gray 13 Aug. 2015 im 14:28

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'));
2
Rajaprabhu Aravindasamy 13 Aug. 2015 im 14:28

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'));
0
Dominik Schreiber 13 Aug. 2015 im 14:31