Вопрос

Возможный Дубликат:
проблема с загрузкой jquery

Я динамически загружаю содержимое в div с помощью функции jQuery load().В обратном вызове я вызываю SyntaxHighlighter.all() , чтобы красиво напечатать синтаксис предварительного блока, который только что был загружен в div.

Проблема в том, что содержимое загружено нормально, но синтаксис не подсвечивается.Однако, когда я жестко кодирую предварительный блок в div, поэтому не загружаюсь в DOM с помощью функции jQuery load(), синтаксис get выделяется как положено.

Итак, я предполагаю, что SyntaxHighlighter.all() работает только с предварительными блоками, которые находятся в исходном коде html, которые можно просмотреть с помощью view page source, а не с фактическим содержимым в DOM?

Есть какие-нибудь идеи, как я могу заставить это работать?

Javascript для выполнения загрузки и выделения:

<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>

содержимое 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>

внешний файл, который загружается с помощью 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>

С наилучшими пожеланиями

Это было полезно?

Решение

Другие советы

  1. Сделайте элемент скрытым с помощью css (отображение:отсутствует)
  2. Добавьте элемент на страницу
  3. Вызовите SyntaxHighlighter.all()
  4. Когда вы будете готовы сделать его видимым, удалите css или класс, который сделал его скрытым.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top