jquery加载问题

我正在使用jQuery加载函数异步加载页面,如下所示:

tree.click(function() { if ($(this).hasClass("file")) { tree.removeClass("selected"); $(this).addClass("selected"); content.load("content/"+this.id+".html"); contentContainer.effect("highlight"); SyntaxHighlighter.all(); } }); 

其中一个外部页面如下所示:

 
 /** * 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. } } 

现在是SyntaxHighlighter.all(); 从上面调用tree.click()函数应该使用漂亮的语法高亮显示前块,但是当通过jQuery load()函数使用pre块加载文件时,这不起作用。

当我将预块硬编码到主文件的内容div中时,它确实有效。

有任何想法吗??

谢谢你到目前为止的答案。 我理解回调部分,我现在在load函数的回调中实现了SyntaxHighlighter.all()调用,但仍然没有运气……

我将追加2个完整的文件,因为它们的大小相同。

index.php文件:

    braindump           $(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(); }); } }); });    
  • Design Patterns
    • Decorator Pattern
    • Visitor Pattern
    • Chain of Responsibility
  • Design Principles
 /** * 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. } } 

和另一个文件:

 
 /** * 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. } } 

请注意,最初通过SyntaxHighlighter.all()正确呈现硬编码的前块,但是load函数的回调中的那个不起作用。

SyntaxHighlighter.allwindow.onload事件 – 它只触发一次。

要在页面加载后进行语法高亮显示,请使用highlightfunction:

 content.load("content/"+this.id+".html", function () { // this is executed after the content is injected to the DOM contentContainer.effect("highlight"); SyntaxHighlighter.highlight(); }); 

如果没有(根据查看代码),你可能需要查看一些显式参数(其中{}是一组空的配置参数,并且当从ajax加载处理程序调用时this将是content ):

 SyntaxHighlighter.highlight({}, this); 

你需要在回调中调用它来加载:

  content.load("content/"+this.id+".html",function() { SyntaxHighlighter.all(); }); 

load是异步的,所以当GET请求在后台完成时,它会继续执行语句。