0
votes

Puis-je ajouter onclick à la liste des articles avec Ajax, JQuery?

Ce code fonctionne correctement: xxx pré>

mais cela ne: p> xxx pré>

Il donne le message d'erreur: "RéférenceError: Works n'est pas défini" p>

une fonction d'alerte simple (), mais uniquement avec le paramètre "Index": P>

onclick="alert(' + index + ')"


2 commentaires

Comprendre la délégation d'événement | JQuery Learning Center


Parce que votre clic ressemble à ceci lorsque vous avez rendu: onclick = "apparaît (maths (code)" Il recherche la variable math , pas la chaîne "math"


3 Réponses :


1
votes

Le problème indiqué est

montre-alject n'est pas défini p> blockQquote>

donc l'Onclick = n'est pas capable de trouver votre fonction. p>

Lorsque vous utilisez onclick = code> avec une fonction, cette fonction doit être définie comme un global . La définissant dans le document doc.Ready ne le rend que disponible dans ce bloc Doc.Ready, ce n'est pas global, il ne peut donc pas le trouver p>

déplacer la fonction en dehors de doc.ready et il le trouvera . P>

Il existe également une erreur avec des guillemets manquants, autour de l'argument, ajouté dans l'extrait de l'extrémité ci-dessous. p>

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="students"></div>


0 commentaires

1
votes

problème que vous avez est la portée de la fonction et ne pas citer la valeur dans l'appel de la fonction. Il est préférable de ne pas utiliser d'événements inline, mais de lier les auditeurs d'événements à l'élément.

Vous feriez mieux d'utiliser la délégation d'événements et les attributs de données P>

$(document).ready(function() {
  // bind click handler to students, listen for clicks on li elements
  // event delegation
  $("#students").on("click", "li", function() {
    // get the li that was clicked
    var li = $(this);
    // read the data attribute
    var subject = li.data("subject");
    console.log(subject);
  });

  $.getJSON('./record.json', function(data) {
    var studentsHTML = '<ul>';
    $.each(data, function(index, student) {
      studentsHTML += '<li data-subject="' + student.subject + '">' + student.name + '</li>';
    });
    studentsHTML += '</ul>';
    $('#students').html(studentsHTML);
  });

});


0 commentaires

1
votes

Inspectez l'élément LI sur lequel vous avez ajouté l'événement OnClick. Votre oncclick ressemble à ceci: - apparition de la présence ('math')

pas comme ça: - apparition de la montre (maths)

Le correctif s'échapperait correctement les citations comme indiqué par Freedomn-M

et cela devrait fonctionner


0 commentaires