2

我正在尝试创建一个包含此编辑器动态创建的实例的小程序。

除了能够创建一个打开/关闭编辑器的按钮之外,我让它工作。 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})
    });

     });

    });
4

1 回答 1

0

我对您的代码进行了一些更改,现在似乎可以正常工作。

我尝试逐点解释它们:

  1. 变量editorNumberCounter,并且toggleOnOffCounter必须是全局范围的,否则您将丢失增量值
  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/

于 2013-06-10T20:25:10.653 回答