X-editable 不能二次初始化的问题解决方案
最近用到了 X-editable 可编辑表格插件,发现了一个头疼的问题,X-editable 不能对同一个 <a> 元素二次初始化。
如下代码举例:在页面加载完成时,用“数组1”填充一个下拉框;然后单击按钮,用“数组2”再次填充该下拉框;此时点开下拉框,发现竟然还是“数组1”的数据。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="plugins/bootstrap-3.3.7-dist/css/bootstrap.css" />
<link rel="stylesheet" href="plugins/bootstrap3-editable/css/bootstrap-editable.css" />
<title>可编辑表格试验</title>
<script src="plugins/jquery-3.4.1.js"></script>
<script src="plugins/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
<script src="plugins/bootstrap3-editable/js/bootstrap-editable.js"></script>
</head>
<body>
<h1>X-editable</h1>
<div id="div1">
<a href="#" id="target"></a>
</div>
<button onclick="fun()">click</button>
</body>
<script>
// 页面加载完后第一次初始化下拉框
$(function() {
var items = [{value: "giant", text: "捷安特"}, {value: "merida", text: "美利达"}];
$("#target").editable({
type: 'select',
mode: 'popup',
source: items,
sourceCache: false,
emptytext: '空值',
placement: 'bottom',
success: function(response, newValue) {
console.log(newValue);
}
});
});
// 单击按钮进行第二次初始化
function fun() {
// $("#div1").html("");
// $("#div1").html('<a href="#" id="target"></a>');
// $(function() {
var items2 = [{value: "geely", text: "吉利"}, {value: "gwm", text: "长城"}];
$("#target").editable({
type: 'select',
mode: 'inline',
source: items2,
sourceCache: false,
emptytext: '请选择',
success: function(response, newValue) {
console.log(newValue);
}
});
// });
}
</script>
</html>
我的解决方案是把上面注释部分放开。也就是先将 <a> 目标从 DOM 中删除,然后用 jQuery 在原位置添加一个新的 <a> 元素,待元素创建好之后,再进行第二次初始化就可以了。
如果页面使用 Vue,那么道理也是一样。先将 Vue 绑定的页面数据存在一个临时变量中,然后清空 Vue 绑定的数据,待页面渲染完成之后,再将临时变量中的数据回填进 Vue 或进行其它进一步的操作。代码类似下面这样:
var app = new Vue({
el: '#app',
data: {
list: []
},
methods: {
renderHtml: function(data) {
var temp = app.list; // 数据暂存入临时变量
app.list = []; // 清空绑定数据
$(function() {
// 页面渲染完后再回填数据或进行其它进一步的操作
app.list = data;
// 进一步的操作……
});
}
}
});
对于这个问题,研究了一下 X-editable 源码,可惜水平有限,没看出来问题出在哪,于是暂时采用这种比较笨的办法。
X-editable 不能二次初始化的问题解决方案的更多相关文章
- DirectX11笔记(二)--Direct3D初始化1之基本概念
原文:DirectX11笔记(二)--Direct3D初始化1之基本概念 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010333737/art ...
- 使用jquery.qrcode生成二维码及常见问题解决方案
转载文章 使用jquery.qrcode生成二维码及常见问题解决方案 一.jquery.qrcode.js介 jquery.qrcode.js 是一个纯浏览器 生成 QRcode 的 jQuery ...
- 轻量ORM-SqlRepoEx (二)初始化SqlRepoEx
一.SqlRepoEx引用 暂时没放至nuget上,可以直接到https://github.com/AzThinker/SqlRepoEx下载源码,编译引用. (一).静态引用 1.需引用以下dll在 ...
- Objective-C学习笔记(二十二)——初始化方法init的重写与自己定义
初学OC.对init这种方法不是非常了解.我们如今来分别对init方法进行重写以及自己定义,来加深对他的了解. 本样例也是用Person类来进行測试. (一)重写init方法. (1)在Person. ...
- C++2.0新特性(二)——<一致性初始化、Initializer_list 、for循环、explicit>
一.一致性初始化(uniform initialization) 之前初始化时存在多个版本,让使用者使用时比较混乱,现在提供一种万用的初始化方法,就是使用大括号. 原理解析:当编译器看到大括号包起来的 ...
- Tomcat源码阅读(二)初始化
近来,我开始阅读tomcat的源码,感觉还挺清晰易懂:为了方便理解,我参考了网上的一些文章,把tomcat的组成归纳一下:整个tomcat的组成如下图所示: Tomcat在接收到用户请求时,将会通过以 ...
- Win32中GDI+应用(二)--初始化与清理
GDI+提供了GdiplusStartup和 GdiplusShutdown 函数来进行初始化和完成清理工作.你必须在调用其他的GDI+函数之前,调用GdiplusStartup函数,在完成GDI+工 ...
- 二、初始化superset
上一步成功安装了superset, 1.初始化数据 创建命令 #创建管理员账号fabmanager create-admin --app superset#cd到superset 根目录参考路径 C: ...
- vue 源码学习二 实例初始化和挂载过程
vue 入口 从vue的构建过程可以知道,web环境下,入口文件在 src/platforms/web/entry-runtime-with-compiler.js(以Runtime + Compil ...
随机推荐
- Java内功修炼系列一工厂模式
工厂模式是一种创建型模式,它提供了一种新的创建对象的方式,一般情况下我们都习惯用new关键字直接创建对象.有时候会遇到这种情况,我们需要根据具体的场景选择创建什么类型的对象,可能有多种类型都能选择,但 ...
- day65——day69
目录 DAY65 课堂笔记 1.vue实例 2.插值表达式 3.文本指令 4.面向对象js 5.js函数补充 6.事件指令 7.属性指令 DAY66 课堂笔记 1.表单指令 2.条件指令 3.循环指令 ...
- 交叉熵-loss-理解
参考链接: https://blog.csdn.net/tsyccnh/article/details/79163834
- UVA1416/LA4080 Warfare And Logistics
题目大意:有N个点,M条路,如果两条路不连通的话,就将这两条路的距离设置为L 现在要求你求出每两点之间的最短距离和 接着要求 求出炸断 给出的M条路中的一条路后,每两点之间的最短距离和的最大值(翻译来 ...
- PHP jpgraph的一点小提示和方法
PHP默认是不启用GD库的,因为需要在php.ini的配置文件中将extension=php_gd2.dll注释打开.打开后你就可以画一些你想画的各种奇葩图案了.什么?不会画?那回去学基础! 今天看了 ...
- MySQL系列(六)--索引优化
在进行数据库查询的时候,索引是非常重要的,当然前提是达到一定的数据量.索引就像字典一样,通过偏旁部首来快速定位,而不是一页页 的慢慢找. 索引依赖存储引擎层实现,所以支持的索引类型和存储引擎相关,同一 ...
- 『Power AI by AI』 PAI-AutoML2.0重磅发布
PAI-AutoML调参服务是通过算法的方式解放用户调节算法参数的工作.自2018年8月发布PAI-AutoML1.0版本以来,该功能已经帮助众多PAI的中小企业用户提升了模型的准确性,得到了不错的反 ...
- js移动端判断上下左右划屏
$(function(){ (function(){ var LSwiperMaker = function(o){ var that = this; this.config = o; this.co ...
- python 获取天气信息
[说明]接口为聚合数据接口.API使用说明: 实现代码: import requests,json def main(): #参数 farmat=1 cityname = input("请输 ...
- tesseract训练手写体
前面的步骤都一样,从第4步开始 4.使用tesseract生成.box文件: tesseract eng.handwriting.exp0.tif eng.handwriting.exp0 -l en ...