gpt4 book ai didi

jquery - CKEditor 循环仅适用于最后一个实例

转载 作者:行者123 更新时间:2023-12-01 00:49:26 25 4
gpt4 key购买 nike

我正在尝试在页面上的所有 CKEditor 文本区域上设置焦点事件。下面是加载 jQuery 文档的代码:

for (var i in CKEDITOR.instances) {
alert(CKEDITOR.instances[i].name);
CKEDITOR.instances[i].on('focus', function() {
alert(CKEDITOR.instances[i].name);
remove_invalidation(CKEDITOR.instances[i].name);
});
}

(注意:remove_invalidation() 是我编写的一个函数,它只是删除文本区域上的一些 CSS 格式。它不会影响问题。)

我添加了几个警报来查看发生了什么。因此,正如预期的那样,当文档就绪事件启动此代码时,我会得到一个又一个文本区域,其中包含每个 CKEditor 文本区域的名称。这有效。

但是,当我在任何文本区域内单击以使其获得焦点时,警报始终会弹出页面上最后一个文本区域的名称。

最佳答案

试试这个:

for (var i in CKEDITOR.instances) {
(function(i){
alert(CKEDITOR.instances[i].name);
CKEDITOR.instances[i].on('focus', function() {
alert(CKEDITOR.instances[i].name);
remove_invalidation(CKEDITOR.instances[i].name);
});
})(i);
}

问题是您在每个焦点事件中使用相同的 i ,并且 i 逐渐增加到最后一个编辑器的值。将代码放置在立即执行的函数中可以通过为代码提供自己的作用域来解决此问题。

关于jquery - CKEditor 循环仅适用于最后一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7501150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com