[jQuery] Unterschiede in Funktionsinitialisierung

chmee

verstaubtes inventar
Premium-User
Während
Code:
jQuery.preload = function(array) {
  ..
};
funktioniert, interessiert den Browser folgende Schreibart nicht,
und die Funktion ist nicht ansprechbar/definiert. warum?
Code:
(function($){
  $.fn.preload = function(array) {
    ..
  };
})(jQuery);
Aufruf dann
Code:
$.preload(['bild1.jpg']);

Originalcode Hier - http://pastebin.com/QbDaUUTP

mfg chmee
 
Der erste Schnipsel erweitert jQuery selbst um eine Methode, also die Bibliothek, während der 2. Schnipsel jQuery-Objekte um die Methode erweitert.

Du könntest also mit dem 2. Schnipsel bspw. so arbeiten:
Code:
$(window).preload(['bild1.jpg']);

Da das aber überflüssig ist, solange das jQuery-Objekt in der Funktion ohne Bedeutung ist und du keine chainability benötigst, würde ich Schnipsel 1 bevorzugen, aber vielleicht einen eindeutigeren Namen für die Methode wählen(eigener Namespace), um Konflikte zu vermeiden falls mal jQuery von hause aus um eine Methode "preload" erweitert wird.
 
Zuletzt bearbeitet:
Der erste Schnipsel erweitert jQuery selbst um eine Methode, also die Bibliothek, während der 2. Schnipsel jQuery-Objekte um Methoden erweitert.
Richtig.

Javascript:
jQuery.preload = function(array) {
			  
			};

//Ist das gleiche wie

(function($){
			  $.preload = function(array) {
				
			  };
			})(jQuery);

//Und wird beides angesprochen über
$.preload([]);
Wenn du die Methode allerdings verketten willst brauchst du folgendes
Javascript:
(function($){
			  $.fn.preload = function(array) {
				
			  };
			})(jQuery);
//ansprechen per (z.B.)

$().preload([]);

Wäre noch zu erwähnen das die Methode (s.u.) die schlechtere alternative ist, wegen noconflict.
//e Damit meine ich das es die schlechtere alternative gegenüber der $.preload Variante ist.
Javascript:
jQuery.preload = function(array) {
  ..
};
 
Zurück