代码之家  ›  专栏  ›  技术社区  ›  Sindre Sorhus

使用textareas创建jQuery插件时出现问题

  •  1
  • Sindre Sorhus  · 技术社区  · 15 年前

    我想修改一下 script 在文本区域中模拟word2007迷你吧。我把它包装在一个插件中,问题是它不能处理多个文本区域。

    You can try it out at JSBin
    (只需在第一个文本区域选择som文本,然后单击“b”)



    应该提到它在预览中正确显示,但是它在文本区域中添加了双标记。在Firefox和IE中都不起作用。为什么?



    1 回复  |  直到 15 年前
        1
  •  3
  •   Nick Craver    15 年前

    首先,我们将讨论双标记问题,它们的出现是因为这些处理程序:

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

    里面 你的 .each() 循环,这意味着要为运行代码的每个元素绑定一个处理程序,创建 n 相同的处理程序 #bold 元素,只需将这些处理程序移到 循环(并确保 .unbind() 它们或使用 .live() ,以防插件运行多次)。

    当我们在做的时候,我们应该移动 $(document).mousedown(function() { ... });

    .select() 可以跨浏览器使用我认为可以消除 $.browser.msie 子句,至少在IE8中是不需要的,但如果您想支持旧版本,请务必测试它们。

    .css() I've setup your code for testing here