Javascript .appendchild在CKeditor中执行两次

Javascript .appendchild在CKeditor中执行两次,javascript,ruby-on-rails,ckeditor,Javascript,Ruby On Rails,Ckeditor,我正在为CKeditor使用simpleuploads插件。除了一个小问题,一切都很好 我正在尝试像这样将上传的图像对象包装到div中 <div class="image-container> <img class="addedImg> </div> 问题是div被包装在另一个div中,如下所示: <div class="image-container"> <div class="image-container">

我正在为CKeditor使用simpleuploads插件。除了一个小问题,一切都很好

我正在尝试像这样将上传的图像对象包装到div中

<div class="image-container>
   <img class="addedImg>
</div>
问题是div被包装在另一个div中,如下所示:

<div class="image-container">
   <div class="image-container">
       <img class="addedImg">
   </div>
</div>

如何使脚本只执行一次

编辑:
由于加载了我的自定义资产/javascripts/ckeditor/config.js,然后再次加载galetahub gem的资产/ckeditor/config.js而导致的问题。不知道问题出在哪里。如果找到解决方案,将发布更多详细信息。

代码很好,但该文件包含两次,因此侦听器将执行两次。通过在第一次执行finishedUpload事件后停止finishedUpload事件,可以避免此问题:

CKEDITOR.on('instanceReady', function(e) {
    e.editor.on( 'simpleuploads.finishedUpload' , function(ev)
    {
            var element = ev.data.element;
            if (element.getName() == 'img')
            {
                    var img = element.$,
                    doc = img.ownerDocument,
                    div = doc.createElement('div');
            img.setAttribute('class', 'addedImg');
            img.removeAttribute('width');
            img.removeAttribute('height');
            div.setAttribute('class', 'image-container');
                    img.parentNode.replaceChild(div, img);
            div.appendChild(img);

                    ev.stop(); // Stop the event in case the listener is inserted twice
            }
    });
});

我已经测试了你的代码,对我来说效果很好。我认为您可能正在加载/app/assets/javascripts/ckeditor/config.js两次,这就是为什么代码会执行两次。你能试试吗?嗨,阿方索!很棒的插件。价值10欧元。我已经检查了我的源代码,config.js只包含一次。有没有一种方法可以测试它是否加载了两次?您不应该包含config.js文件,因为它是由CKEditor自动完成的。您可以通过在“var element=ev.data.element;”处设置断点进行测试线路。如果无法避免两次加载文件,则可以通过添加“ev.stop();”来停止finishedUpload事件孩子死后call@AlfonsoML你说得对!它被呼叫了两次。ev.stop();解决了这个问题。我正在使用galetahub gem来制作rails,所以仍在试图找出原因。如果你加上答案,我就接受。
CKEDITOR.on('instanceReady', function(e) {
    e.editor.on( 'simpleuploads.finishedUpload' , function(ev)
    {
            var element = ev.data.element;
            if (element.getName() == 'img')
            {
                    var img = element.$,
                    doc = img.ownerDocument,
                    div = doc.createElement('div');
            img.setAttribute('class', 'addedImg');
            img.removeAttribute('width');
            img.removeAttribute('height');
            div.setAttribute('class', 'image-container');
                    img.parentNode.replaceChild(div, img);
            div.appendChild(img);

                    ev.stop(); // Stop the event in case the listener is inserted twice
            }
    });
});