重複の可能性:
jquery ロードの問題
jQuery load() 関数を使用して、コンテンツを動的に div にロードしています。コールバックでは、SyntaxHighlighter.all() を呼び出して、div にロードされたばかりの pre ブロックの構文をきれいに出力します。
問題は、コンテンツは正常に読み込まれますが、構文が強調表示されないことです。ただし、pre ブロックを div にハードコーディングすると、jQuery load() 関数を介して DOM に読み込まれず、構文が必要に応じて強調表示されます。
したがって、SyntaxHighlighter.all() は、DOM の実際のコンテンツではなく、ビュー ページのソースを使用して表示できる HTML ソースにある事前ブロックでのみ機能すると思いますか?
どうすればそれを機能させることができますか?
読み込みと強調表示を行う 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>
敬具