jQuery 文本编辑器 (jqte),使用 change 事件

jQuery Text Editor (jqte), using change event

我正在尝试使用 jQuery 文本编辑器 (jqte)change() 事件编写一些代码,我有两个函数可以为 jqte 提供功能文本区域的

当点击页面中的某些元素时,加载 JavaScript 的编辑器:

function onLoadEditor(){
    jQuery(".comment-editor").jqte({
        // some jqte params, such as fsize: false,indent: false...
        change: function(){ observeEditor(); }
    });
}

以及其他通用函数,适用于只有一个编辑器的页面

jQuery(function() {
    jQuery(".comment-editor").jqte({
        // some jqte params, such as fsize: false,indent: false...
        change: function(){ observeEditor(); }
    });
});

我想访问已触发 change() 事件

的具体文本区域的 ID(页面中的所有文本区域都有一个 ID)

我应该如何编写 observeEditor() 函数来实现这一点?或者...我应该如何在 jqte 更改 属性?

中定义函数

读完这个jQuery blur event with ID and value我已经解决了,用下面的代码(简化)

function onLoadEditor(){
    jQuery(".comment-editor").each(function(idx, elem) {
        jQuery(this).jqte({
            // some jqte params, such as fsize: false,indent: false...
            change: observeEditor(elem.id),
    });
}

jQuery(function() {
    onLoadEditor();
});

但是现在我遇到了另一个问题...

正如您在原始问题中所读到的,单击页面中的某些元素时会调用 onLoadEditor()。然后调用另一个 javascript 函数 jsComment(),构建一个表单(包含一个 textarea.comment-editor 字段)并以这种方式呈现

function jsComment(){
    ...
    var form = '<div class="comments_wrapper ... ';
    jQuery(form).insertAfter(some_element).fadeIn('fast');
    onLoadEditor();
}

问题是 change() 事件仅在表单淡入时触发一次,而想法恰恰相反,事件应该在用户添加一些文本时触发,而不是在出现时触发...有什么提示吗?

更新 看完后Event binding on dynamically created elements?我是这样解决的

function onLoadEditor(){
    jQuery('.comment-editor').each(function(idx, elem) {
        jQuery(this).jqte({
            // some jqte params, such as fsize: false,indent: false...
        });
        jQuery(document).on('change', 
            jQuery('.comment-editor'), 
            function(){ 
                observeEditor(elem.id); 
            }
        );
    });
}

jQuery(function() {
    onLoadEditor();
});

虽然最后我没有使用 change() 事件,因为它一直在被触发。使用 keyup() & paste() 表现更好,例如