128 votes

Pourquoi cette fonction de clic jQuery ne fonctionne-t-elle pas ?

Code :

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $("#clicker").click(function () {
        alert("Hello!");
        $(".hide_div").hide();
    });
</script>

Le code ci-dessus ne fonctionne pas. Lorsque je clique sur le #clicker, il n'y a pas d'alerte et il ne se cache pas. J'ai vérifié dans la console et je n'obtiens aucune erreur. J'ai également vérifié si JQuery se chargeait et c'est le cas. Je ne suis donc pas sûr de l'origine du problème. J'ai également utilisé une fonction document ready avec une alerte et cela a fonctionné. Veuillez m'aider. Merci.

211voto

mobius Points 4824

Vous êtes censé ajouter le code javascript dans un fichier de type $(document).ready(function() {}); bloc.

c'est-à-dire

$(document).ready(function() {
  $("#clicker").click(function () {
    alert("Hello!");
    $(".hide_div").hide();
  });
});

Comme Documentation sur jQuery déclare : "Une page ne peut pas être manipulée en toute sécurité tant que le document n'est pas "prêt". jQuery détecte cet état de préparation pour vous. Code inclus dans $( document ).ready() ne s'exécutera que lorsque le Document Object Model (DOM) de la page sera prêt pour l'exécution du code JavaScript".

89voto

user5636597 Points 911

J'ai trouvé la meilleure solution à ce problème en utilisant ON avec $(document).

 $(document).on('click', '#yourid', function() { alert("hello"); });

pour l'identification du début, voir ci-dessous :

$(document).on('click', 'div[id^="start"]', function() {
alert ('hello'); });

Finalement, après une semaine, je n'ai plus besoin d'ajouter le déclencheur onclick. J'espère que cela aidera beaucoup de gens

21voto

sємsєм Points 2999

Votre code peut fonctionner sans document.ready(). Assurez-vous simplement que votre script se trouve après le #clicker. Regardez cette démo : http://jsbin.com/aPAsaZo/1/

L'idée dans le concept prêt. Si vous êtes sûr que votre script est le dernier élément de votre page ou qu'il se trouve après l'élément concerné, cela fonctionnera.

<!DOCTYPE html>
<html>
<head>

<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
  <script src="https://code.jquery.com/jquery-latest.min.js"
        type="text/javascript"></script>
  <a href="#" id="clicker" value="Click Me!" >Click Me</a>
  <script type="text/javascript">

        $("#clicker").click(function () {
            alert("Hello!");
            $(".hide_div").hide();

        });

</script>

</body>
</html>

Avis : Dans le jsbin remplacer la démo http con https dans le code, ou utilisez cette variante Démo

5voto

tjons Points 1288

Essayez d'ajouter $(document).ready(function(){ au début de votre script, puis }); . De plus, est-ce que le div contient l'identifiant correctement, c'est-à-dire en tant qu'identifiant, pas en tant que classe, etc.

5voto

aldanux Points 4845

Vous devez entourer votre code Javascript de la mention $(document).ready(function(){}); Regarde ça. JSfiddle .

Code JS :

$(document).ready(function() {

    $("#clicker").click(function () {
        alert("Hello!");
        $(".hide_div").hide();    
    });
});

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