4

重複の可能性:
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>

敬具

4

2 に答える 2

4

解決策: jquery の負荷の問題

于 2009-09-03T16:51:47.643 に答える
0
  1. css で要素を非表示にする (display:none)
  2. ページに要素を追加する
  3. SyntaxHighlighter.all() を呼び出す
  4. 表示する準備ができたら、非表示にした css またはクラスを削除します。
于 2009-09-03T11:16:55.090 に答える