Ich fange gerade mit dem Schreiben von jQuery-Plugins an. Ich habe drei kleine Plugins geschrieben, aber ich habe die Zeile einfach in alle meine Plugins kopiert, ohne wirklich zu wissen, was das bedeutet. Kann mir jemand etwas mehr darüber erzählen? Vielleicht ist eine Erklärung eines Tages nützlich, wenn Sie ein Framework schreiben :)
Was macht das? (Ich weiß, dass es jQuery irgendwie erweitert, aber gibt es noch etwas Interessantes zu wissen)
(function($) {
})(jQuery);
Was ist der Unterschied zwischen den folgenden zwei Arten, ein Plugin zu schreiben:
Typ 1:
(function($) {
$.fn.jPluginName = {
},
$.fn.jPluginName.defaults = {
}
})(jQuery);
Typ 2:
(function($) {
$.jPluginName = {
}
})(jQuery);
Typ 3:
(function($){
//Attach this new method to jQuery
$.fn.extend({
var defaults = {
}
var options = $.extend(defaults, options);
//This is where you write your plugin's name
pluginname: function() {
//Iterate over the current set of matched elements
return this.each(function() {
//code to be inserted here
});
}
});
})(jQuery);
Ich könnte hier weit weg sein und vielleicht bedeuten alle dasselbe. Ich bin verwirrt. In manchen Fällen ist dies scheint nicht in ein Plugin zu arbeiten, dass ich schrieb Typ 1 verwendet Bisher Typ 3 der eleganteste mir scheint , aber ich möchte auch über die anderen kennen.
(function($) { })(jQuery)
Sie sagte: "Ich weiß, es erweitert jQuery irgendwie [...]". Natürlich wissen Sie es nicht , da Ihre Aussage zu 100% falsch ist. Übrigens kann es für zukünftige Leser irreführend sein. Schauen Sie sich das an: stackoverflow.com/a/32550649/1636522 .
(function($) { })(jQuery);
verpackt den Code so, dass er$
sichjQuery
innerhalb dieses Verschlusses befindet, auch wenn$
etwas anderes außerhalb davon bedeutet, normalerweise als Ergebnis von$.noConflict()
zum Beispiel. Dies stellt sicher, dass Ihr Plugin funktioniert, ob oder nicht$ === jQuery
:)