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

时间:2015-05-29 19:59:01

标签: javascript jquery javascript-events jqte

我正在尝试使用 jQuery文本编辑器(jqte)change()事件编写一些代码,我有两个函数可以为textarea提供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(); }
    });
});

我想访问具体textarea的id(页面中的所有textareas都有id)已触发change()事件

我应该如何编写observeEditor()函数来实现这一目标?或者......我应该如何在jqte change属性中定义函数?

1 个答案:

答案 0 :(得分:0)

阅读此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()&amp; paste(),例如