我怎么添加一个预的标签内的代码标签的字?
-
08-06-2019 - |
题
我试图使用 jQuery
格式化码块,具体地说,添加一个 <pre>
标签内 <code>
标签:
$(document).ready(function() {
$("code").wrapInner("<pre></pre>");
});
Firefox适用的格式正确,但即把整个码的框在线之一。如果我添加一个警告
alert($("code").html());
我看到的,即插入一些额外的文本预先标记:
<PRE jQuery1218834632572="null">
如果我重新载入页面,数量下jQuery的变化。
如果我用 wrap()
而不是的 wrapInner()
, ,包裹 <pre>
外 <code>
标记,两个即和Firefox处理是正确的。但是不应该 <pre>
工作 内部 <code>
为好?
我更愿意使用 wrapInner()
因为我可以再添加一个CSS类的 <pre>
标记,以处理所有的格式,但是,如果我使用 wrap()
, 我必须把页面格式CSS在 <pre>
标签和文/字体中的格式 <code>
标签,或者火狐,即两呛。不是一个巨大的处理,但是我想让它尽可能简单。
有其他人遇到这个吗?我失去了一些东西?
解决方案
这是之间的差异 方框和内联 元素。 pre
是一块水平的元素.这是不合法的,把它放在 code
标签,该标签 只能含有内嵌的内容.
因为浏览器必须支持任何godawful标签的汤他们可能会找到真正的网络,火狐尝试做什么,你的意思。即发生的处理方式,这是很好的规格;行为在这种情况下是不确定的,因为它永远不应该发生。
- 你能来代替 替换 的
code
元素pre
?(因为该框/内联的问题,从技术上讲,应当仅作如果元素都在里面 一个元件"流动"的内容, 但浏览器可能会做你想要什么无论如何。) - 为什么是这个
code
元件的放在第一位,如果你想要的pre
's行为? - 你也可以得到的
code
元素pre
's的空白保留权力的CSSwhite-space: pre
, 但显然 即6唯一荣誉,在严格的模式.
其他提示
顺便说一句我不知道它是相关的,但预先标签内部编码标签不会验证在严格的模式。
您使用的是最新的jQuery?如果你试图
$("code").wrapInner(document.createElement("pre"));
它是任何更好或者你得到同样的结果?
作为markpasc指出,预元件的内部编码件不允许在HTML。最好的解决办法是改变你HTML代码用 <pre><code> (这意味着一个预先格式化的方框,其中包含码)直接在你HTML码块。
你可以使用html()包装:
$('code').each(function(i,e)
{
var self = $(e);
self.html('<pre>' + self.html() + '</pre>');
});
如上所述,你会更好改变你html。但这种解决方案应工作。