Je cherche des informations à ce sujet - "Comment créer une fonction JQuery personnalisée et comment l'utiliser"
J'ai effectué une recherche dans Google mais je n'ai trouvé aucune information à ce sujet.
Pouvez-vous expliquer en détail, sur les fonctions personnalisées?
Par "fonction personnalisée", je suppose que vous voulez dire "plugin". Si c'est le cas, il existe un bon tutoriel sur le site jQuery . L'idée de base est la suivante:
(function($) {
$.fn.myPlugin = function() {
return this.each(function() {
//Do stuff
});
};
}(jQuery));
Fondamentalement, le code ci-dessus fait quelques choses. Premièrement, il capture la valeur de jQuery
et le transmet à une fonction anonyme où il peut alors être appelé $
(afin que les utilisateurs de votre plug-in utilisant l’identifiant $
pour quelque chose d’autre puissent l’utiliser)
Il déclare ensuite une méthode sur $.fn
, qui est simplement un alias pour $.prototype
. Dans cette méthode, this
fait référence au jeu d'éléments correspondant sur lequel le plugin a été appelé. Puisqu'il s'agit d'un objet jQuery et qu'il peut contenir plusieurs éléments, vous devez effectuer une itération sur cet ensemble (c'est pourquoi la variable each
est présente).
L'instruction return
permet de maintenir la chaîne du plug-in avec d'autres méthodes jQuery. Puisque each
renvoie une instance de jQuery, le plug-in lui-même renvoie une instance de jQuery et les autres méthodes jQuery peuvent évidemment être appelées sur une instance de jQuery.
Comme le dit gesutery, utilisez extend()
. Vous pouvez ajouter vos propres propriétés et fonctions en tant que valeurs:
$(function(){
$.extend({
propAsString: '',
propAsNumber: 12345,
propAsObject: {},
propAsFunction: function() {
//your function code
}
});
$.propAsFunction(); //call your function
});
vous pouvez l'utiliser comme ça
$(document).ready(function() {
$('#button').click(function(){
$(this).myFunction();
});
$.fn.myFunction = function() {
alert('test');
}
});
(function($){
$.fn.extend({
//plugin name - animatemenu
animateMenu: function(options) {
//Settings list and the default values
var defaults = {
animatePadding: 60,
defaultPadding: 10,
evenColor: '#ccc',
oddColor: '#eee'
};
var options = $.extend(defaults, options);
return this.each(function() {
var o =options;
//Assign current element to variable, in this case is UL element
var obj = $(this);
//Get all LI in the UL
var items = $("li", obj);
//Change the color according to odd and even rows
$("li:even", obj).css('background-color', o.evenColor);
$("li:odd", obj).css('background-color', o.oddColor);
//Attach mouseover and mouseout event to the LI
items.mouseover(function() {
$(this).animate({paddingLeft: o.animatePadding}, 300);
}).mouseout(function() {
$(this).animate({paddingLeft: o.defaultPadding}, 300);
});
});
}
});
})(jQuery);
Pour ceux qui recherchent une "fonction personnalisée" selon le titre, il suffit de:
if(window.$)
window.$.customMethod = function() { * your code here * };
Cela fonctionnera alors comme le fait $.ajax()
Je voulais que mes fonctions personnalisées soient appelées comme $.myfunction()
. J'ai défini ces fonctions dans un fichier js externe un peu comme ceci
$.myfunction = function(){
//Your code here
};