Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jquery - fonction Ready et Jquery ($)

Question de base

Sujet résolu
7 décembre 2011 à 19:49:35

Bonjour,

Depuis quelque temps je me suis mis à la librairie Jquery, qui est très pratique et utile, mais j'ai un sujet ou j'ai du mal a comprendre, je m'explique:

On parle souvent de la fonction ready qui permet d'exécuter du code quand le "DOM is ready", en clair quand la page à fini de charger, jusque la pas de problème.

Mais j'ai lu sur plusieurs documentation que le fait d'utiliser le "$" pour une fonction, par ex :
$(function(){ alert('toto');});
en dehors de la méthode ready (sans l'utiliser), charge la fonction quand le "DOM is ready" aussi.

Pourtant certaine de mes fonctions ne marche que en les mettant dans la méthode ready et d'autre marche avec ou sans, alors je ne comprend pas trop comment savoir quel fonctions doivent être placer a l'intérieur ou en dehors de la méthode ready ?

De plus j'ai entendu dire que la méthode ready était particulièrement gourmande, donc moins j'aurais de contenue dedans, mieux ça sera.

Merci d'avance si quelqu'un peut m'éclairer.
  • Partager sur Facebook
  • Partager sur Twitter
7 décembre 2011 à 20:08:37

Parce que les gestionnaires (ou écouteurs) d'événements doivent être dans le ready pour que ça fonctionne.
Les autres codes par exemple alert(); fonctionnent dans le ready ou en dehors.
  • Partager sur Facebook
  • Partager sur Twitter
7 décembre 2011 à 20:21:42

$(document).ready(function() {

$().ready(function() {
        
$(function() {


Au moins trois écritures différentes... qui font exactement la même chose.
La troisième étant la plus courte, elle est préférable...
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 11:02:54

Merci pour vos réponses,

D'accord donc si j'ai bien compris :
$(document).ready(function(){  });

est égal à = 

$(function(){   });


Dans ce cas qu'est-ce que le script fait dans un cas comme celui la ? :
$(document).ready(function()
{  
    $(function(){ alert('toto');  });
});


Il faudrait donc plutôt l'écrire comme ceci ? :
$(document).ready(function()
{  
    function(){ alert('toto');  };
});



Merci d'avance
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 11:09:38

Salut, euh là ta fonction tu fait comment pour l'appeler après?
donc différente solution:
$(function(){  
    alert('toto');
});


ou

$(function(){  
    maFonction();
});

function maFonction(){
  alert('toto');
}


ou encore

$(function(){  
  var maFonction = function (){
     alert('toto');
   };
   maFonction ();
});


ou encore

$(function(){  
  (function (){
     alert('toto');
   })();
});

Cette dernière créé une fonction anonyme que tu invoque tout de suite.
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 11:48:37

Merci ninlock, je comprend beaucoup mieux grâce à tes quelques exemples simple mais important.

La fonction anonyme à quelle utilité ?

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 11:55:37

Pour comprendre l'utilité d'une fonction anonyme il faut d'abord comprendre celle d'une fonction.

Tu fais une fonction si son code à l'intérieur peut-être appelé plusieurs fois, ou par pure organisation.
Si tu as un code qui est exécuté dans tous les cas une seule fois, alors autant utiliser une fonction anonyme.

Exemple, il est préférable de faire :
$('#test').click(function() {
   alert('ok'); 
});


Plutôt que :
$('#test').click(afficherAlert());

function afficherAlert() {
   alert('ok'); 
}
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 12:02:07

D'accord, donc une fonction anonyme ne s’exécute qu'une seule fois dans la page ?

Si par exemple je clique a nouveau sur "#test" dans ton exemple je n'aurais "toto" que à mon premier clique ?
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 12:45:05

Non, dans son explication soit tu fait une fonction anonyme qui contient ton alert comme le 1er cas car il y a que le onclick d'un seul bouton qu'il l'appel.
Soit plusieurs click ou plusieurs actions on besoin de faire alert('toto') auquel cas autant définir une fonction nommé pour que tous appel cette fonction, car dans ce cas en général on souhaite que toutes les actions fasse la même chose, donc si tu remplace toto par tata, comme tous appel la même fonction ton seul changement fera que tous afficheront tata.
L'important de sa remarque c'est pas que le alert est appelé une fois c'est que c'est le seul élément('test') qui va faire le alert!
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2011 à 12:56:43

Citation : MrWhiteSky

D'accord, donc une fonction anonyme ne s’exécute qu'une seule fois dans la page ?


Non elle s'exécute autant de fois qu'une fonction nommée. :)
  • Partager sur Facebook
  • Partager sur Twitter
29 mai 2024 à 12:25:51

bonjour je veux commprendre le fonctionnement  de "ready" en js
  • Partager sur Facebook
  • Partager sur Twitter
29 mai 2024 à 14:04:31

Bonjour,

Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération
  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)