如何创建JQueryTE文本编辑器的动态实例

时间:2013-06-10 19:43:46

标签: javascript jquery jqte

我正在尝试创建一个包含动态创建的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})
    });

     });

    });

1 个答案:

答案 0 :(得分:0)

我对您的代码进行了一些更改,现在似乎有效。

我试着逐点解释:

  1. 变量editorNumberCountertoggleOnOffCounter必须是全局范围的,否则您将失去递增的值
  2. 元素的ID(动态创建与否)必须是唯一的,所以我考虑计数器创建div和span元素
  3. 对于动态创建的元素,您必须使用bind方法或事件不会绑定
  4. toggle属性不存在!您必须使用status属性
  5. 在JQTE上绑定的元素是点击后的元素
  6. 后面的get元素

    代码:

    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/