Pregunta

  

Duplicar posible:
  

Estoy cargando contenido dinámicamente en un div usando la función de carga jQuery (). En la devolución de llamada que estoy llamando SyntaxHighlighter.all (), imprimir bastante la sintaxis del bloque antes de que acaba de ser cargado en el div.

El problema es que el contenido se carga bien, pero la sintaxis no quede resaltado. Sin embargo, cuando codificar el bloque previo en el div, por lo que no se carga en en el DOM a través de la función de carga jQuery (), la sintaxis de obtener destacó como debiera.

Así que supongo que la SyntaxHighlighter.all () sólo funciona en los bloques pre que se encuentran en el código HTML, que se pueden ver utilizando una fuente de visualización de la página, y no en el contenido real en el DOM?

Cualquier idea de cómo se puede hacer que funcione?

El javascript para hacer la carga y destacando:

<script type="text/javascript">
        $.ajaxSetup ({
            cache: false
        });

        $(document).ready(function() {
            var tree = $("#tree li");
            var contentContainer = $("#contentContainer");
            var content = $("#content");

            SyntaxHighlighter.config.clipboardSwf = 'syntaxhighlighter_2.0.320/scripts/clipboard.swf';
            SyntaxHighlighter.all();

            // Treeview
            $("#tree").treeview({
                persist: "location",
                collapsed: true
            });

            tree.click(function() {
                if ($(this).hasClass("file")) {
                    tree.removeClass("selected");
                    $(this).addClass("selected");
                    content.load("content/"+this.id+".html", function() {
                        contentContainer.effect("highlight");
                        SyntaxHighlighter.all();
                    });
                }
            });
        });
    </script>

el contenido div:

<div id="content">
                <pre class="brush: java;">
/**
 * The HelloWorldApp class implements an application that
 * simply prints "Hello World!" to standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}
                </pre>
            </div>

el archivo externo que se carga con jQuery.load ():

Hello World

<pre class="brush: java;">
/**
 * The HelloWorldApp class implements an application that
 * simply prints "Hello World!" to standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}
</pre>

Saludos

¿Fue útil?

Solución

Otros consejos

  1. Hacer el elemento escondido con CSS (display: none)
  2. Añada el elemento a la página
  3. Llamada SyntaxHighlighter.all ()
  4. Cuando esté listo para hacerlo visible, retire el css o clase que lo hizo oculto.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top