我正在尝试将事件绑定到在CKEditor的textarea中输入的每个句子。我将句子分开,然后添加<span>
标签来界定为每个句子分配唯一的1索引ID的句子(即:所以第一句的ID为“sen_1”)。
我相信我正在成功选择句子,因为我可以将它们记录到控制台。但是,我似乎无法为他们分配事件。
var el = CKEDITOR.instances.rawText.document.getById('sen_1');
if (el !== null) {
// not used, el is an object, e is just the span element and its contents
var e = el['$'];
el.on('click', function() {
alert('I should see this');
});
}
我试过调整上面的代码,但没有取得任何成功。我已经尝试将事件从“点击”更改为各种其他方法(我最终会将其更改为延迟悬停,但我想先将事件绑定排序),但是没有取得任何成功。
这是一个很少量的代码,我觉得我错过了一些显而易见的东西,但却无法追踪它到底是什么。
编辑:我找到了this post,这似乎可以解决我向<span>
标记添加事件的问题。但是,contentDom
事件未触发。
var userText = CKEDITOR.instances.rawText;
userText.on( 'change', function() {
...
// get text from CKEditor
// wrap each sentence in <span> tags (I want events bound to these)
// setData of CKEditor as the sentences wrapped
// ajax calls to MongoDB to store sentence info
...
userText.on( 'contentDom', function() {
var el = userText.document.getById('sen_1');
console.log(el);
userText.editable().attachListener( el, 'click', function(e) {
alert("See?");
e.data.getTarget();
});
});
}
我没有看到el
被记录,我在Chrome或Safari的开发工具中找不到任何contentDom
事件。我目前在
关于可能导致contentDom
无法解雇的任何想法?我意识到编辑器内容准备就绪时应该触发contentDom
。我尝试将contentDom
事件放在change
事件之外,并在那里工作。但是,对我来说这几乎没用,因为<span>
标签的数量会随着用户输入的变化而变化。