“Snippet”jQuery插件不能在同一个元素上调用两次

时间:2011-01-16 18:13:48

标签: jquery call code-snippets highlighting

好吧,我正在构建一个在线源代码编辑器,我使用Snippet,一个jQuery插件来突出显示。所以,现在我有一个textarea和一个pre元素,我将textarea的值复制到每个keyup的pre ...所以我在document.ready()和每个keyup上调用函数.snippet()为了使语法突出显示。但我注意到,当我在同一个元素上多次调用它时,它将无法工作。在这里查看我的代码:http://jsfiddle.net/parisk/YkNMh/。 (它不会对keyup起作用,因为我在document.ready()上调用了一次,如果你在文件就绪上禁用了调用,那么它只能在第一个keyup上工作)......我真的很想解决这个问题。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

代码段插件用pre包装<div>元素,并根据您选择的代码样式为其添加一个类。

显然他们会使用这些来检查元素是否已经 snippet 'ed。

您需要撤消这些更改,在您的情况下,一个简单的解决方案是更改

$('pre').snippet("c",{style:"the",showNum:true});

$('pre').removeClass().unwrap().snippet("c",{style:"the",showNum:true});

示例http://jsfiddle.net/gaby/Kpphx/

答案 1 :(得分:0)

我遇到了同样的问题,尝试catch错误是:TypeError:$ .browser未定义。因此,在对JQuery进行一些阅读后,结果证明$ .browser在JQuery 1.9中已被删除。

要修复在JQuery链接(迁移插件)后添加此内容:

<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>

问题解决了,希望这有助于某人!