0

markdown 中的三个反引号呈现为<pre><code class="...">...</code></pre>. 进一步来说,

# in markdown
```java

```

# render as 
<pre>
<code class="java">
...
</code>
</pre>

# my expecting result (for Google code prettify):
<pre class="prettyprint linenums lang-java">
...
</pre>

我目前的解决方案是添加以下代码,但它不起作用。

<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?skin=son-of-obsidian></script>

 <script type="text/javascript">
 jQuery(document).ready(function () {
     $('pre code').each(function() {
         var code = $(this).html();
         var lang = $(this).attr('class');
         if (lang) {
             $(this).parent().attr('class', 'prettyprint linenums lang-'+lang).html(code);
         }
     });
     prettyPrint();
 });
 </script>

如何删除<code class="...">...</code>


我使用 SyntaxHighlighter<pre class="brush: java">...</pre>WordPress++中突出显示我的代码块(基于 SyntaxHighlighter)Windows Live WriterPreCode

目前,我转向降价。要在 Markdown 中插入代码块,我使用

```java
code here
```

# OR

<pre class="brush: java">
code here
</pre>

它们都对我不起作用,因为 SyntaxHighlighter 要求里面的所有左尖括号<pre></pre>都应该是 HTML 条目转义。

因此,我安装了 Google 代码美化但遇到了上述问题(不兼容)。

4

2 回答 2

1

试试下面的,让我知道这是否适合你。

$('pre').each(function() {
     var el = $(this).find('code');
     var code = el.html();
     var lang = el.attr('class');
     if (lang) {
         $(this).addClass('prettyprint linenums lang-' + lang).html(code);
     }
 });

JSFiddle 演示

于 2016-01-21T15:27:26.707 回答
1

您忘记从 pre 元素中删除原始代码对象,导致代码重复。您应该调用$(this).remove();以删除旧代码对象。

于 2016-01-21T15:38:44.403 回答