0

我正在尝试使用jQuery Text Editor (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(); }
    });
});

change()我想访问触发事件的具体文本区域的 id(页面中的所有文本区域都有一个 id)

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

4

1 回答 1

0

在阅读了这个带有 ID 和值的 jQuery 模糊事件后,我已经解决了它,使用以下代码(简化)

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()事件只被触发一次,当表单淡入时,而想法相反,事件应该在用户添加一些文本时触发,而不是在出现时触发......有什么提示吗?

更新 阅读动态创建元素上的事件绑定后?我已经这样解决了

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()

于 2015-05-30T08:55:28.317 回答