2010-08-06 58 views
1

我试图修改这个script模拟textarea中的Word 2007迷你吧。我已经将它包装在一个插件中,问题是它不能用于多个textareas。用textareas创建jQuery插件问题

You can try it out at JSBin
(第一textarea的只要选择索姆文本,然后点击 “B”)

有人能帮助我吗?我有点失落。


更新

应该提到,它显示正确的预览,但它在textarea的加双标签。它不适用于Firefox或IE。为什么?

这是非常hackish,所以我希望有人告诉我如何做到这一点。



它仅适用于Chrome工作,截至目前

+0

什么不工作?如果我在第一个或第二个文本区域中单击以使粗体显示,它将显示在预览中。此时期望的行为是什么? – 2010-08-06 11:56:55

+0

查看更新的问题 – 2010-08-06 12:15:33

回答

3

首先,我们要解决的双标签的问题,他们发生,因为这些处理器的:

$("#bold").click(function() { ... }); 
$("#italic").click(function() { ... }); 
$("#underline").click(function() { ... }); 
$("#link").click(function() { ... }); 

他们正在绑定里面您的.each()循环,意思是一个处理程序正在绑定您正在运行您的代码的每个元素,创建n手在.each()循环之外移动这些处理程序(并确保它们是.unbind()或使用.live(),以防万一插件也运行多次)。

虽然我们在这,但我们应该将$(document).mousedown(function() { ... });也移出该循环,同样的问题是不想多次绑定它。

你的IE/Firefox问题主要是这个例子是如何在JSBin上设置的结果(jQuery没有被定义,因为包含),而不是实际的插件问题。然而,因为.select()可以跨浏览器使用,我认为你可以消除$.browser.msie子句,至少在IE8中不需要,但是如果你想支持它们,一定要测试旧版本。

只有以上更改和一些代码格式改进(例如.css()可以采用对象),I've setup your code for testing here