2013-07-17 2 views
1

Je lance une version "strip out" de FB bigPipe et ça marche parfaitement, sauf le jquery. Lorsque j'analyse jquery au format json et que j'ajoute à une balise div, la jquery cesse de fonctionner.Problèmes pour que jquery fonctionne au format html json rendu

Vous pouvez voir le code jquery "bigPipe" J'utilise here

Le code pour obtenir ce travail est assez simple. En PHP:

$data = array(
     'id' => {div tag ID}, 
     'content' => {html content}, 
     'title' => {document title}, 
     'css' => {...}, 
     'js' => {...} 
     ); 

$output = '<script>Test.render(' . json_encode($data) . ');</script>'; 

Je pense que le problème est que je dois ajouter window.addEventListener pas à la fenêtre elle-même, mais à la balise div I tout le contenu.

Et là, je suis coincé. Comment puis-je faire cela? Comment puis-je obtenir cette jquery pour travailler dans ce html ajouté?

Voici un exemple sur la façon dont il devrait fonctionner:

Si vous essayez d'exécuter ce code à partir d'un problème de fichier php occur.Do ceci:

  1. Mettez le code js de jsFiddle en un fichier js et inclure normalement dans le fichier .php. Créer une balise div dans le fichier php et l'appeler "not_working" - Enregistrer
  2. Faire un document .html vide et ajouter une balise div comme <div id="test">Click me</div> et enregistrer.
    1. Créez un nouveau fichier js et nommez-le test.js. mettre dans ce code:

$ (function() {

$("body").on("click","#test",function(){ 
    alert("You clicked me!!"); 
});   

});

Enregistrer.

  1. Dans le fichier PHP, ajoutez ceci: $data = array( 'id' => "not_working", 'content' => {LINK and NAME to the HTML file you created!!}, 'title' => "Test", 'css' => "", 'js' => {LINK and NAME to the JS file you created!!}, );

  2. Exécutez le fichier .php, cliquez sur le moi Cliquez !.

+0

jquery? Je ne vois pas de jquery dans le code jsfiddle? veux-tu dire Javascript? –

+0

avez-vous des erreurs de JavaScript? quel est le résultat? Pouvez-vous donner un peu plus de contexte? –

+0

@winner_joiner J'ai mis à jour ma question avec un tutoriel sur la façon dont cela devrait fonctionner. Essayez-le et dites-moi pourquoi ne pas travailler :) –

Répondre

0

Problème résolu. C'était une erreur dans la façon dont les fichiers js étaient insérés dans l'élément body. Après avoir corrigé ce code. Je l'ai résolu, et maintenant tout fonctionne parfaitement.

Si quelqu'un essaie d'utiliser ce code, voici les changements:

function _addJsFile(filename) { 
    var blody = document.getElementsByTagName("body")[0], 
    script = document.createElement('script'), 
    done = false; 

    script.src = filename; 
    script.type='text/javascript'; 
    script.onload = function() { 
     if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) { 
     done = true; 
     // Handle memory leak in IE 
     script.onload = script.onreadystatechange = null; 
     if (blody && script.parentNode) { 
      blody.removeChild(script); 
     } 
    } 
    }; 

    blody.appendChild(script); 
}