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.all
到window.onload
事件 – 它只触发一次。要在页面加载后进行语法高亮显示,请使用
highlight
function: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请求在后台完成时,它会继续执行语句。