Comment interroger et enregistrer un lien dans un tableau pour un appel ultérieur?

Je fais une requête dans wikipedia pour obtenir un extrait et le titre avec le lien. Ensuite, si je clique sur un titre, je voudrais obtenir l’article complet dans un modal.

J’essaie d’obtenir différents articles pour chaque lien que je reçois dans la première requête.

Ici c’est un JsFiddle

$("#wiki").on('click', function(e) { var articleName = $(this).data('subject'); $.getJSON("https://it.wikipedia.org/w/api.php?callback=?", { srsearch: articleName, action: "query", list: "search", format: "json" }, function(data) { $("#results ul").empty(); $("#results ul").append("

Results for " + articleName + "

").text(); $.each(data.query.search, function(i, item) { $("#results").append("
  • " + item.title + "
    " + item.snippet + "</li"); var myLink = $("#results ul li a").attr("href"); $("#results div a").attr("href", "#"); $('.modal').on('show.bs.modal', function (e) { $.getJSON("https://it.wikipedia.org/w/api.php?action=parse&format=json&callback=?", { page: articleName, prop:"text" }, function(data) { $(".modal-content").html(data.parse.text['*']); }); }); }); });
  • HTML

       

    Utilisez .one() à l’élément #wiki click , event.preventDefault() , event.stopPropagation() lors d’ ul a événement de click élément; définir la page sur e.relatedTarget.textContent à l’ e.relatedTarget.textContent de $.getJSON() dans le gestionnaire d’événements show.bs.modal

     $("ul").on("click", "a", function(e) { e.preventDefault(); e.stopPropagation(); }) $("#wiki").one('click', function(e) { var articleName = $(this).data('subject'); $.getJSON("https://en.wikipedia.org/w/api.php?callback=?", { srsearch: articleName, action: "query", list: "search", format: "json" }, function(data) { $("#results ul").empty(); $("#results ul").append("

    Results for " + articleName + "

    ").text(); //For each result i set a
  • with the title and snippet. //The title will be a disabled link with the //data-atsortingbutes to load the modal $.each(data.query.search, function(i, item) { $("#results").append("
  • " + item.title + "
    " + item.snippet + "
  • jsfiddle https://jsfiddle.net/kgyc8to4/26/