我有这个JavaScript(用jQuery):
var g_files_added, socket, cookie, database = null;
var file_contents = [];
function viewFile(key, filename) {
$('#title-filename').text(filename);
$('.prettyprint').text(file_contents[key]);
$('#viewFileModal').modal('show');
}
$(document).ready(function() {
$(document).on('shown', '#viewFileModal', function(event) {
prettyPrint();
});
});
// Variables have been set in code not shown, irrelevant to problem.
// prettyPrint() is called everytime the #viewFileModal is shown,
// but its effect is only felt once.
所以prettyPrint()
被调用每次viewFileModal模式对话框(引导提供)所示,它只是似乎只让每个页面加载的效果一次。
我曾尝试注释掉prettyPrint()
和制作模式对话框出现后,在JS控制台中输入。 它的确仅具有效果的第一次示出了盒(每页的负载)。
有任何想法吗? 我一直停留在这一段时间。 我也试图把调用prettyPrint()
在viewFile功能; 但效果是一样的。
非常感谢。
山姆。
呼唤“prettyPrint()”,增加了一类名为“prettyPrinted”它已被美化后您的PRE标签。 下面的线将删除你的页面上的“prettyPrinted”类的所有实例,以便prettyPrint()函数可以重新美化你PRE标签。 这可以在不动态地添加PRE标签的DIV来完成。
$('.prettyprinted').removeClass('prettyprinted');
由于马太。 解决方案是改变是这样。 也就是说,加全预动态,而不仅仅是文字。
var g_files_added, socket, cookie, database = null;
var file_contents = [];
function viewFile(key, filename) {
$('#title-filename').text(filename);
$('#fileblock').html('<pre class="prettyprint">' + file_contents[key] + '</pre>'); // fileblock is a div.
$('#viewFileModal').modal('show');
}
$(document).ready(function() {
$(document).on('shown', '#viewFileModal', function(event) {
prettyPrint();
});
});
:)
约瑟夫POFF的答案是正确的,但你必须要小心。 prettPrint()包装在扫描标签的一切。 如果删除prettyprinted类,你是不是删除扫描标签。 除非你正在清理内容您的预(或剥离出所有的扫描标签),每次你还记得prettyPrint(),您将增加扫描标签,将包装你的旧扫描标签。 它可以摆脱控制的真的很快。
文章来源: prettyPrint() only has an effect once. (google-prettify)