SyntaxHighlighter.all()在DOM级别上不起作用?

时间:2009-09-03 10:26:16

标签: javascript jquery syntaxhighlighter

  

可能重复:
  jquery load issue

我正在使用jQuery load()函数将内容动态加载到div中。 在回调中,我正在调用SyntaxHighlighter.all(), to pretty打印刚刚加载到div中的pre块的语法。

问题是内容加载正常,但语法没有突出显示。 但是,当我对div中的pre块进行硬编码时,所以不通过jQUery load()函数加载到DOM中,语法得到了应该突出显示。

所以我猜测SyntaxHighlighter.all()只适用于html源代码中的pre块,可以使用视图页面源查看,而不是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>

亲切的问候

2 个答案:

答案 0 :(得分:4)

解决方案:jquery load issue

答案 1 :(得分:0)

  1. 使用css(display:none)隐藏元素
  2. 将元素添加到页面
  3. 调用SyntaxHighlighter.all()
  4. 当您准备好让它可见时,请删除隐藏它的CSS或类。