64 votes

Comment exécuter une fonction dans jQuery

Je suis un débutant en programmation et je ne sais pas comment enregistrer une fonction dans JQuery et l'exécuter à plusieurs endroits.

J'ai:

 $(function () {
  $("div.class").click(function(){
    //Doo something

  });

  $("div.secondclass").click(function(){
    //Doo something
  });

});
 

Maintenant les 2 "// Doo somethings" sont les mêmes et je ne veux plus écrire le même code.

Si je mets:

 $(function () {

  function doosomething ()
  {
    //Doo something
  }

  $("div.class").click(doosomething);

  $("div.secondclass").click(doosomething);

});
 

Cela exécuterait la fonction au chargement de la page, plutôt que seulement quand il clique.

Comment est-ce que je fais ceci correctement?

Merci!

111voto

Andrew Moore Points 49765

Le suivant devrait fonctionner très bien.

$(function() {

  // Way 1
  function doosomething()
  {
    //Doo something
  }

  // Way 2, equivalent to Way 1
  var doosomething = function() {
    // Doo something
  }

  $("div.class").click(doosomething);

  $("div.secondclass").click(doosomething);

});

Fondamentalement, vous devez déclarer votre fonction dans le même champ d'application que vous utilisez (JavaScript utilise des Fermetures de déterminer le champ d'application).

Maintenant, étant donné que les fonctions en JavaScript se comporter comme n'importe quel autre objet, vous pouvez simplement affecter doosomething que la fonction à appeler sur le clic en utilisant .click(doosomething);

Votre fonction ne va pas s'exécuter jusqu'à ce que vous appelez l'aide d' doosomething() (doosomething sans () se réfère à la fonction mais ne pas l'appeler) ou d'une autre, des appels de fonction (dans ce cas, l' click gestionnaire).

29voto

noboruwatanabe Points 279

Je le ferais de cette façon:

 (function($) {
jQuery.fn.doSomething = function() {
   return this.each(function() {
      var $this = $(this);

      $this.click(function(event) {
         event.preventDefault();
         // Your function goes here
      });
   });
};
})(jQuery);
 

Ensuite, sur le document prêt, vous pouvez faire des choses comme ceci:

 $(document).ready(function() {
   $('#div1').doSomething();
   $('#div2').doSomething();
});
 

18voto

Vincent Ramdhanie Points 46265
function doosomething ()
{
  //Doo something
}


$(function () {


  $("div.class").click(doosomething);

  $("div.secondclass").click(doosomething);

});

5voto

Joey Ezekiel Points 160

Vous pouvez également le faire. Comme vous souhaitez utiliser une fonction partout, vous pouvez le faire en appelant directement JqueryObject.function (). Par exemple, si vous voulez créer votre propre fonction pour manipuler n'importe quel CSS sur un élément:

 jQuery.fn.doSomething = function () {
   this.css("position","absolute");
   return this;
}
 

Et la façon de l'appeler:

 $("#someRandomDiv").doSomething();
 

Prograide.com

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.

Powered by:

X