2010-09-01 9 views
0

J'utilise le plugin surligneur de syntaxe et je veux avoir toujours appliqué à une zone div spécifique. Le contenu de la div va changer en fonction d'un lien hypertexte sur le clic. Comment puis-je joindre la balise de script de surligneur de syntaxe autour de l'élément "mydiv" à tout moment?Syntaxe surligneur autour d'une Div Élément

<script> 
    function viewCode() { 
     $('#mydiv').load('euler/_48.py'); 
    } 
</script> 

<a href="#" onClick="viewCode();return true">View Code</a> 

<div id="mydiv"> 
    my div's initial content 
</div> 

<script type="syntaxhighlighter" class="brush: js"><![CDATA[ 
    //always apply this script to mydiv 
]]></script> 

Répondre

3

Avec SyntaxHighlighter, vous ne pouvez pas mettre en évidence des éléments arbitraires sur la page, donc nous en tenir à la méthode script à la place.

D'abord, donner la balise de script et ancre une id, comme

<a href="#" id="show_code">Show Code</a> 
<script type="syntaxhighlighter" class="brush: js" id="highlighted"></script> 

Ensuite, utilisez cette option pour charger le contenu lorsque l'utilisateur clique sur le lien

$('#show_code').click(function(){ 
    $.get('euler/_48.py', function(data){ 
    $('#highlighted').html('<![CDATA[' + data + ']]>'); 
    SyntaxHighligher.highlight(); 
    }); 
}); 

Rappelez-vous que la méthode habituelle d'utiliser syntexhighlighter.js ne fonctionnerait pas ici parce que la fonction SyntaxHighlighter.all() ne lie que la fonction highlight() à l'événement onload, vous devrez appeler cette fonction vous-même chaque fois que la page updat es, en ajoutant un appel à la fonction SyntaxHighligher.highlight() chaque fois que vous mettez à jour la page.


Sinon, je vous recommande généralement la méthode pre. Son presque la même chose que ci-dessus, mais nous utilisons l'élément pre à la place et utiliser la fonction jQuery text() pour obtenir l'échappement fait correctement. En utilisant l'élément pre:

<pre class="brush: js" id="highlighted"></pre> 

Avec ce morceau de Javascript

$.get('euler/_48.py', function(data){ 
    $('#highlighted').text(data); 
    SyntaxHighligher.highlight(); 
}); 
+0

Merci. Comment pourrais-je l'appliquer à #mydiv? Est-ce juste $ ('# mydiv'). Get à la place de my $ ('# mydiv'). Load? J'ai essayé votre suggestion avec ce que je viens de dire mais ça ne fonctionne pas pour moi en ce moment. – Steve

+0

@medikgt Vous ne pouvez pas, et ne devrait pas - comme je l'ai dit dans la première ligne, vous ne devriez pas essayer d'utiliser SyntaxHighlighter sur * tout élément HTML * - que '' script' ou pre'. La syntaxe '.load()' est spéciale, en ce sens qu'elle est appelée depuis l'élément. –

+0

@medikgt Je pense que vous confondez certaines choses. Vous devez clarifier ce que vous essayez de faire ici. Ce que je pensais que vous faisiez était de charger le contenu des fichiers externes dans un 'div', puis d'appliquer la coloration syntaxique, non? –

0

Je pense que vous pouvez appeler la méthode HighlightAll

Exemple: dp.SyntaxHighlighter.HighlightAll('code');

Sultan

Questions connexes