SyntaxHighlighter.all() не работает на уровне DOM?[дубликат]
-
21-09-2019 - |
Вопрос
Возможный Дубликат:
проблема с загрузкой 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>
С наилучшими пожеланиями
Решение
решение: проблема с загрузкой jquery
Другие советы
- Сделайте элемент скрытым с помощью css (отображение:отсутствует)
- Добавьте элемент на страницу
- Вызовите SyntaxHighlighter.all()
- Когда вы будете готовы сделать его видимым, удалите css или класс, который сделал его скрытым.