【问题标题】:How to create dynamic instances of JQueryTE text editor如何创建 JQueryTE 文本编辑器的动态实例
【发布时间】:2013-06-10 19:43:46
【问题描述】:

我正在尝试创建一个包含动态创建的 this editor 实例的小程序。

除了能够创建打开/关闭编辑器的按钮之外,我可以使用它。 jsFiddle 到目前为止我所拥有的。

"use strict";
$(document).ready(function() {

var createPad = $("#createPad").click(function () {
var body = document.getElementById("body");

var editorNumberCounter = 1;
var toggleOnOffCounter= 1;
var editorName = '.'+ (editorNumberCounter++);


var status = document.createElement('div');
status.className = "status";
status.id = "status";

var editorName= document.createElement('span');
editorName.className = "status";
editorName.id = "status";

$(body.appendChild(status));
$(body.appendChild(editorName));

var toggle = status.id + toggleOnOffCounter++;

    $(editorName).jqte();

    // settings of status
    var jqteStatus = true;
    $(toggle).click(function()
    {
        jqteStatus = jqteStatus ? false : true;
        $(editorName).jqte({toggle : jqteStatus})
    });

     });

    });

【问题讨论】:

    标签: javascript jquery jqte


    【解决方案1】:

    我对您的代码进行了一些更改,现在似乎可以使用了。

    我试着逐点解释:

    1. 变量editorNumberCountertoggleOnOffCounter 必须是全局范围的,否则您将丢失增量值
    2. 元素的 ID(无论是否动态创建)必须是唯一的,因此我创建 div 和 span 元素时会考虑计数器
    3. 对于动态创建的元素,您必须使用bind 方法,否则事件将不会被绑定
    4. toggle 属性不存在!您必须使用 status 属性
    5. 绑定到 JQTE 上的元素作为单击元素之后的下一个元素获取

    代码:

    var editorNumberCounter = 0;
    var toggleOnOffCounter = 0;
    $(document).ready(function () {
    
        var createPad = $("#createPad").click(function () {
            var body = document.getElementById("body");
    
            var editorName = '.' + editorNumberCounter++;
            toggleOnOffCounter++;
    
    
            var status = document.createElement('div');
            status.className = "status";
            status.id = "div_status" + editorNumberCounter;
    
            var editorName = document.createElement('span');
            editorName.className = "status";
            editorName.id = "span_status" + editorNumberCounter;
    
            $(body.appendChild(status));
            $(body.appendChild(editorName));
    
            $(editorName).jqte();
    
            // settings of status
            var jqteStatus = true;
            $("#div_status" + editorNumberCounter).bind("click",function () {
                jqteStatus = jqteStatus ? false : true;
                $(this).next().jqte({
                    status: jqteStatus
                })
            });
    
        });
    
    });
    

    这是一个有效的小提琴:http://jsfiddle.net/IrvinDominin/UfhNQ/14/

    【讨论】:

    • 感谢您,感谢您对为什么它不起作用的出色总结!
    • 实际上您的代码在技术上是正确的,但是当您将 span 元素与 JQueryTE 一起使用时,结果应该是当您关闭编辑器时它保留编辑状态的结果。我/你的版本简单地关闭了编辑器,它破坏了插件的功能。我的意思是你所做的在技术上是正确的,但有些地方是不正确的。
    • 但是当你点击按钮时,你想要实现什么?
    • 此链接helpknow.com/jqte/demo/demo.html 是JQTE 演示的链接。看看第三个示例如何保留您在编辑器中所做的编辑的状态?简而言之,如果您使用编辑器使您的文本变为粗体或斜体,或者在您关闭编辑器后它保留的任何内容。我试图为每个动态创建的编辑器实现这个结果。
    • 是控件的一个已知问题,必须在 1.4.0 中修复但不是,可能会在下一个版本中修复jqueryte.com/comments(来自 Julien 的评论);又发现一个小问题,问开发者...
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    相关资源
    最近更新 更多