将事件分配给CKEditor的textarea中的span元素

时间:2016-06-28 00:07:36

标签: javascript javascript-events ckeditor wysiwyg ckeditor4.x

我正在尝试将事件绑定到在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>标签的数量会随着用户输入的变化而变化。

0 个答案:

没有答案