2017-09-17 1 views
0

Je veux apporter des modifications à une image qui se charge via ajax, mais les éléments auxquels j'ai besoin d'accéder ne sont pas présents sur document prêt, donc j'ai essayé .load, mais cela ne semble pas déclencher . Puis-je ajouter une sorte de "drapeau" au contenu chargé qui peut ensuite être détecté et provoquer la fonction .load ci-dessous pour démarrer après que les éléments sont sur la page?jQuery .load pour AJAX Contenu

jQuery(document).ready(function($){ 

$('.qmn_results_page').load(function(event) { 
    var canvas = document.getElementById("jma-chart");console.log('loaded'); 
    var img = document.getElementById("source"); 
    img.src = 'http://my-domain.com/wp-content/uploads/2017/09/chart-headings.jpg'; 
    img.height = 1026; 
    img.width = 1000; 

    //var img = document.getElementById("source"); 
    var ctx = canvas.getContext("2d"); 

    var str = $('#jma-chart').data('points'); 
    var quiz_id = $('#jma-chart').data('id'); 
    var $points = str.split('|'); 


    ctx.drawImage(img, 0, 0); 
    ctx.beginPath(); 
    for (index = 0; index < $points.length; ++index) { 
     $point = $points[index].split(','); 
     if (!index) { 
      ctx.moveTo($point[0], $point[1]); 
     } else { 
      ctx.lineTo($point[0], $point[1]); 
     } 

    } 
    ctx.strokeStyle = "red"; 
    ctx.lineWidth = 2; 
    ctx.stroke(); 
    for (index = 0; index < $points.length; ++index) { 
     $point = $points[index].split(','); 
     ctx.beginPath(); 
     ctx.arc($point[0], $point[1], 4, 0, 2 * Math.PI, false); 
     ctx.fillStyle = 'red'; 
     ctx.fill(); 
    } 

    var dataURL = canvas.toDataURL(); 
$.ajax({ 
    type: 'post', 
    url: chartscript.charturl, 
    data: { 
     action: 'jma_save_image', 
     imgBase64: dataURL, 
     quiz_id: quiz_id 

    }, 
    success: function($html ) { 

    } 
}); 
}); 

});

structure de la page (DIV RÉSULTATS EST AJOUTEE DYNAMIQUE SUR LA PRÉSENTATION DE FORMULAIRE):

`

`

+0

S'il vous plaît inclure votre balisage html ainsi. Merci –

Répondre

0

si l'élément est pas encore présent et que vous voulez lier Avec un événement essayez d'utiliser la méthode jquery .on(). Cela va attacher un événement à un élément spécifique. Vous pouvez vous référer à cette documentation.

http://api.jquery.com/on/

+0

essayé de remplacer par:. $ (document) de .on ('de charge', '.qmn_results_page', la fonction (événement) { mes trucs } pas de chance – user2107656

0

au lieu de

$('.qmn_results_page').load(function(event) { 
    ... 
}); 

Essayez cette

$(document).on('load', '.qmn_results_page', function(){ 
    .... 
    blah blah blah 
    ... 

}) 
+0

désolé, qui ne le fait pas grâce – user2107656