You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在基于jQuery Ajax的CKEditor中添加Accordion(手风琴)组件?

CKEditor 4 添加手风琴(Accordion)功能实现步骤

前置调整

你当前使用的是jQuery slim版本,不支持动画交互,先替换为完整版jQuery:

<!-- 替换原有slim版jQuery引用 -->
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>

步骤1:修改CKEditor初始化配置,新增自定义手风琴插入按钮

修改你原有的CKEDITOR.replace代码如下:

CKEDITOR.replace('detail', {
    // 保留原有工具栏功能的基础上新增手风琴按钮
    toolbar: [
        ['Bold', 'Italic', 'Underline', 'Strike'],
        ['NumberedList', 'BulletedList'],
        ['Link', 'Unlink'],
        ['AccordionBtn']
    ],
    // 注册自定义手风琴插件
    extraPlugins: 'accordionbtn',
    // 关闭内容过滤,避免手风琴结构被自动清除
    allowedContent: true
});

// 注册手风琴按钮插件
CKEDITOR.plugins.add('accordionbtn', {
    init: function(editor) {
        // 添加插入手风琴的命令
        editor.addCommand('insertAccordion', {
            exec: function(editor) {
                // 自定义手风琴结构,可自行调整样式和数量
                const accordionTpl = `
<div class="custom-accordion">
  <div class="accordion-item">
    <h4 class="accordion-header" style="background:#f5f5f5; padding:8px 12px; cursor:pointer; margin:0; border:1px solid #eee;">手风琴标题1</h4>
    <div class="accordion-content" style="padding:12px; border:1px solid #eee; border-top:none; display:none;">
      <p>此处输入手风琴内容</p>
    </div>
  </div>
  <div class="accordion-item">
    <h4 class="accordion-header" style="background:#f5f5f5; padding:8px 12px; cursor:pointer; margin:0; border:1px solid #eee; border-top:none;">手风琴标题2</h4>
    <div class="accordion-content" style="padding:12px; border:1px solid #eee; border-top:none; display:none;">
      <p>此处输入手风琴内容</p>
    </div>
  </div>
</div>`;
                editor.insertHtml(accordionTpl);
            }
        });
        // 工具栏新增按钮
        editor.ui.addButton('AccordionBtn', {
            label: '插入手风琴',
            command: 'insertAccordion',
            toolbar: 'insert',
            // 内置base64图标,无外部依赖
            icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5gMVESkqG7gMewAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAUSURBVDjLY2AYBaNgFIyCoQUAAAAeAAET13FOAAAAAElFTkSuQmCC'
        });
    }
});

步骤2:添加手风琴交互逻辑

编辑器内预览交互

CKEDITOR.on('instanceReady', function(e) {
    const editorDoc = e.editor.document.$;
    editorDoc.addEventListener('click', function(event) {
        if (event.target.classList.contains('accordion-header')) {
            const contentEl = event.target.nextElementSibling;
            contentEl.style.display = contentEl.style.display === 'none' ? 'block' : 'none';
        }
    });
});

前端展示页交互

如果编辑器提交的内容需要在前端页面展示,把以下代码加到展示页面即可:

$(document).on('click', '.accordion-header', function() {
    $(this).next('.accordion-content').slideToggle(300);
});

其他说明

  • 你可以根据设计需求自行调整手风琴的样式、默认标题数量
  • 如果需要更复杂的手风琴功能,也可以下载CKEditor第三方手风琴插件放到项目的ckeditor/plugins目录,再通过extraPlugins配置引入即可

内容的提问来源于stack exchange,提问作者AJAY KUMAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:09:02