我正在尝试使用 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属性中定义函数?
答案 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()
,例如