Est-ce ainsi que l'on définit une fonction dans jQuery ?
$(document).ready( function () {
var MyBlah = function($blah) { alert($blah); };
});
Maintenant pour appeler la fonction je fais :
MyBlah('hello');
Est-ce ainsi que l'on définit une fonction dans jQuery ?
$(document).ready( function () {
var MyBlah = function($blah) { alert($blah); };
});
Maintenant pour appeler la fonction je fais :
MyBlah('hello');
Tout d'abord, votre code fonctionne et c'est une façon valide de créer une fonction en JavaScript (jQuery mis à part), mais parce que vous déclarez une fonction à l'intérieur d'une autre fonction (une fonction anonyme dans ce cas) "MyBlah" ne sera pas accessible depuis la portée globale.
Voici un exemple :
$(document).ready( function () {
var MyBlah = function($blah) { alert($blah); };
MyBlah("Hello this works") // Inside the anonymous function we are cool.
});
MyBlah("Oops") //This throws a JavaScript error (MyBlah is not a function)
Il s'agit (parfois) d'un comportement souhaitable puisque nous ne pas polluer l'espace de noms global Si votre fonction n'a pas besoin d'être appelée à partir d'une autre partie de votre code, c'est la meilleure solution.
En le déclarant en dehors de la fonction anonyme, on le place dans l'espace de noms global, et il est accessible de partout.
Enfin, le $ au début du nom de la variable n'est pas nécessaire, et parfois utilisé comme une convention jQuery lorsque la variable est une instance de l'objet jQuery lui-même (pas nécessairement dans ce cas).
Peut-être que ce dont vous avez besoin est de créer un plugin jQuery Il s'agit d'une solution très simple et utile, car elle vous permettra de faire quelque chose comme ceci :
$('div#message').myBlah("hello")
Voir aussi : http://www.re-cycledair.com/creating-jquery-plugins
Vous pouvez étendre le prototype jQuery et utiliser votre fonction comme une méthode jQuery.
(function($)
{
$.fn.MyBlah = function(blah)
{
$(this).addClass(blah);
console.log('blah class added');
};
})(jQuery);
jQuery(document).ready(function($)
{
$('#blahElementId').MyBlah('newClass');
});
Plus d'informations sur l'extension du prototype jQuery ici : http://api.jquery.com/jquery.fn.extend/
Juste pour clarifier pourquoi les gens ont probablement rétrogradé votre réponse : La fonction n'est pas anonyme car elle est assignée à une variable et deuxièmement, la fonction n'est pas appelée lorsque le document est prêt car elle est seulement assignée, pas appelée.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
7 votes
Remarque : vous ne pouvez pas "définir une fonction dans jQuery", puisque jQuery n'est qu'une bibliothèque, et non le langage. en fait, il ne peut même pas être qualifié de framework, c'est juste une bibliothèque. (a grand bibliothèque)
0 votes
Peut-être voulait-il dire un plugin JQuery ?