kindEditor是一个功能强大的在线文本编辑器,而且提供了插件扩展功能,更好的满足用户各方面的需求。在项目中,我们就有如此的需求:在kindEditor编辑器中,添加一条下划线,并且在下划线的中间位改下划线编号类似填空题的要求:。因此需要自己写一个插件,kindEditor插件的编写在官方文档中都写的很明白,主要分为几个步骤,

1、首先设置插件按钮(工具栏上的按钮)的样式,

.ke-icon-hello {
background-image: url(../skins/default/default.gif);
background-position: 0px -672px;
width: 16px;
height: 16px;
}

2、设置插件按钮的提示内容

KindEditor.lang({
hello : '你好'
});

3、编写插件按钮的点击事件

KindEditor.plugin('hello', function(K) {
var editor = this, name = 'hello';
// 点击图标时执行
editor.clickToolbar(name, function() {
editor.insertHtml('你好');
});
});

这个点击事件需要定义相应的js文件放到kindEditor文件下plugs目录下面。

4、初始化kindEditor时,加上我们的插件按钮

K.create('#id', {
items : ['hello']
});

这样一个kindEditor插件就写好了。然而我的问题来了,因为我要监听我的插件按钮的点击事件,没添加一个下划线,我就需要对下划线上的数字重新排序,(就是一个input,数字就是input的value)在点击事件里就需要遍历input,然而在改方法里就一直获得不到这个元素,用kindEditor文档推荐的query,queryAll ,K()等方法得到的都是null。最后查看编辑器在页面上渲染的效果后发现,编辑器是渲染在一个iframe中的。由此恍然大悟得到了解决方法。

因为渲染在一个iframe中,并且又是一个新的html因此要拿到该body里面的document元素,有如下方法可以实现该功能

document.getElementById(Iframe_Id).contentDocument.getElementById(Element_Id);

使用该方法,顺利的拿到了下划线元素,也完成了排序。

新的问题又来了,在编辑框内,如果删除一条下划线,又需要对下划线上的序号重新排序;这里用到了kindEditor的事件——afterChange,在该方法中遍历下划线元素,重新排序。这里设置下划线的值时,如果使用document.getElementById("id").value = "newValue" ;时,在页面上是改变了,其实html中value是没有改变的,解决方法就是使用方法设置元素的值。

document.getElementById("id").setAttribute("value","newValue");

最后留下一些疑问:

kindEditor文档中的那些和jquery操作元素十分相似的方法,如K.attr(),K.val()...K()等方法,到底是如何使用,用在什么地方,什么时间。这些问题还没弄明白,等到以后遇到在去学习,也希望有这方面经验的大神指点一二。

kindEditor编写插件遇到的问题的更多相关文章

  1. jquery编写插件的方法

     版权声明:作者原创,转载请注明出处! 编写插件的两种方式: 1.类级别开发插件(1%) 2.对象级别开发(99%) 类级别的静态开发就是给jquery添加静态方法,三种方式 1.添加新的全局函数 2 ...

  2. 再谈:jquery编写插件的方法

    版权声明:作者原创,转载请注明出处! 编写插件的两种方式: 1.类级别开发插件(1%) 2.对象级别开发(99%) 类级别的静态开发就是给jquery添加静态方法,三种方式 1.添加新的全局函数 2. ...

  3. jQuery自己编写插件()

    引言: 在项目中不同页面经常要用到已经写好的交互,比如弹窗,比如下拉菜单,比如选项卡,比如删除... 此时如果每次都把代码copy一份无疑是一件比较麻烦并且无趣的事情,而且个人认为有些low了,我们可 ...

  4. 【原】jQuery编写插件

    分享一下编写设置和获取颜色的插件,首先我将插件的名字命名为jquery.color.js.该插件用来实现以下两个功能1.设置元素的颜色.2.获取元素的颜色. 先在搭建好如下编写插件的框架: ;(fun ...

  5. jquery编写插件

    jquery编写插件的方法    版权声明:作者原创,转载请注明出处! 编写插件的两种方式: 1.类级别开发插件(1%) 2.对象级别开发(99%) 类级别的静态开发就是给jquery添加静态方法,三 ...

  6. Qt中如何 编写插件 加载插件 卸载插件

    Qt中如何 编写插件 加载插件 卸载插件是本文要介绍的内容.Qt提供了一个类QPluginLoader来加载静态库和动态库,在Qt中,Qt把动态库和静态库都看成是一个插件,使用QPluginLoade ...

  7. vscode编写插件

    vscode编写插件详细过程 前言 之前编写了一个vscode插件用vscode写博客和发布,然后有园友要求写一篇来介绍如何开发一个vscode扩展插件,或者说介绍开发这个插件的过程.然而文章还没有写 ...

  8. Kindeditor编辑插件的使用

    1.首先kindeditor这个插件需要配合着asp.net的自生带的控件textbox来实现 2.首先前台界面代码 <f:FormRow runat="server"> ...

  9. saltstack主机管理项目:编写插件基类-获取主机列表-提取yaml配置文件(四)

    一.编写插件基类 1.目录结构 1.我是如何获知我有多少种系统? 当客户端第一连接过来的时候,我就已经把这些文件存下来了 ,存在到哪里了?存到数据库了 每次对主机发送命令的动作时,我从库里把数据取出来 ...

随机推荐

  1. Js正则表达式数字或者带小数点的数字

    function chk() { var patrn = /^\d+(\.\d+)?$/; var result = true; $("input[type=text]").eac ...

  2. SQL纯手写创建数据库到表内内容

    建表啥的只点点鼠标,太外行了,不如来看看我的纯手写,让表从无到有一系列:还有存储过程临时表,不间断的重排序: 一:建数据库 create Database Show on primary ( name ...

  3. Usaco 滑雪比赛 Bobsledding, 2009 Dec(dp)

    Description 滑雪比赛bobsled 贝西参加了一场高山急速滑雪比赛,滑道总长度为 L.出发时,她的初速度为 1,贝西可以加速 或减速,每过 1 米,她能将速度增加 1.减少 1 或保持不变 ...

  4. Photoshop把图片调成固定的像素。

    1.用PhotoShop打开需要修改的图片. 2.点击“窗口”菜单的“图层”子菜单,打开图层控制面板(快捷键F7).3.用鼠标左键双击“图层”面板的“背景”图层.在弹出窗口中点击“确定”按钮,解锁背景 ...

  5. luogu P3391 【模板】文艺平衡树(Splay) 非旋转treap

    Code: #include<bits/stdc++.h> using namespace std; void setIO(string s) { string in=s+".i ...

  6. 池(Pool)

    #1 就是一个资源的集合,用的时候按照你的需要去取,用完了给人家放回去 #2 学编程的时候,老师给我们的解释过池的意思,大概是: 如果你喝水,你可以拿杯子去水龙头接.如果很多人喝水,那就只能排队去接. ...

  7. 😈 HTTP 学习笔记

  8. BZOJ 3413 匹配 (后缀自动机+线段树合并)

    题目大意: 懒得概括了 神题,搞了2个半晚上,还认为自己的是对的...一直调不过,最后终于在jdr神犇的帮助下过了这道题 线段树合并该是这道题最好理解且最好写的做法了,貌似主席树也行?但线段树合并这个 ...

  9. tensorflow之tf.slice()

    转载:https://www.jianshu.com/p/71e6ef6c121b https://www.cnblogs.com/chamie/p/11073363.html def slice(i ...

  10. php 文件加载方式

    两种加载文件的方式 include require 使用场景: 动态加载文件的时候,使用include,否则使用require. 示例: # 引入php文件--include方式 inlcude(&q ...