jQuery Nestable2 使用总结
最近,因为公司的一个新项目,用了一个基于bootstrap二次改造的国外友人的框架。感觉很一般吧,要求更换框架,客户拒绝。只能搞这个,发现里面一个jQuery插件-【Nestable】但是源作者长时间不更新,后来发现了一个新版本,应该是另外一个人基于Nestable改造的,称之为“Nestable2”,所以也就花了一些时间研究了一下,使用百度找的资料都很浅薄,所以这里做一个汇总,也希望更多的人少走弯路吧。虽然说这个插件用的人不多。
项目地址
疑难点汇总
1.Nestable 初始化折叠
在Nestable 2中,初始化折叠跟Nestable 原始版本中一致,但是百度搜索的结果很少,我觉得应该是这个插件很少人用吧,因为比这个好看的插件多了去。
// 展开指定内存块中的元素
$(selector).nestable('expandAll');
// 收合指定内存块中的元素
$(selector).nestable('collapseAll');
2.Nestable 禁止拖动
禁止拖动在Nestable原始版本中是没有这一功能的,因为这个插件就是可拖拽的,拖拽完成后,把数据再传递给后台进行修改。这个我找了很久都没有一个好点的解决方案,在CSDN上博主说,直接删除插件底层代码就可以实现,但是怕有问题,所以找到新的插件,也就是版本2。来看代码。
$('selector').nestable({
'onDragStart': function (l, e) {
return false;
}
});
这个地方,如果把 return false删除,就可以写用户拖动元素时,触发作为选项提供的回调函数。l是主容器,e是已移动的。需要这个功能的,可以查看GitHub上的介绍。
3.Nestable 点击事件
这个是我在平安夜当晚研究到11多,都没解决的问题,今天偶然性发现了问题,原因是JS的事件冒泡造成的,同时,非常感谢Google的帮助哈。
Nestable 2比原版更加扩展,直接使用JSON数据渲染到页面上,但是没有额外的点击事件,这就需要自己操作了,所以就用类作为点击。
$('.dd-item').click(function () {
var id = $(this).data('id');
alert(id);
});
但是这个地方出问题了。点击第一级数据正常,第二级数据后,获取到了两个id,一个是父级id,一个是点击的id,再继续测试,三级的话,会弹出三个数据。经过百度的一段探索后,发现可以使用jQuery 事件one()方法,但是只能点击一次,第二次点击就无法使用了,这不是一个有效的方法。
然后再者就是使用防止冒泡的方法:前端博客
w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true
试了试,没有效果。那就拼接html,单独给li标签写一个onclick方法依旧是原本的小bug。
分析了一下渲染的界面。发现生成的里面嵌套了一个div,如果给这个div加一个点击事件,会不会能够实现单击的效果呢?
$('.dd-handle').click(function () {
var p = $(this).parent();
var id = p.data('id')
alert(id);
});

果然,这个验证了我的猜想,给渲染的子级元素点击事件,找到父级ID就不会出现冒泡问题了。哈哈完美解决。
总结
Nestable2基于Nestable一个升级版,添加了很多功能,虽然去年不再更新,但是这个插件依旧很强大。希望这个文档能够给一些带来一点帮助吧。
本文首发于:https://qsh5.cn/post-70.html
jQuery Nestable2 使用总结的更多相关文章
- Angular杂谈系列1-如何在Angular2中使用jQuery及其插件
jQuery,让我们对dom的操作更加便捷.由于其易用性和可扩展性,jQuer也迅速风靡全球,各种插件也是目不暇接. 我相信很多人并不能直接远离jQuery去做前端,因为它太好用了,我们以前做的东西大 ...
- jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧
这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...
- Jquery的点击事件,三句代码完成全选事件
先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
- jQuery实践-网页版2048小游戏
▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ...
- jquery和Js的区别和基础操作
jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...
- jQuery之ajax实现篇
jQuery的ajax方法非常好用,这么好的东西,你想拥有一个属于自己的ajax么?接下来,我们来自己做一个简单的ajax吧. 实现功能 由于jq中的ajax方法是用了内置的deferred模块,是P ...
- 利用snowfall.jquery.js实现爱心满屏飞
小颖在上一篇一步一步教你用CSS画爱心中已经分享一种画爱心的方法,这次再分享一种方法用css画爱心,并利用snowfall.jquery.js实现爱心满屏飞的效果. 第一步: 利用伪元素before和 ...
- jQuery的61种选择器
The Write Less , Do More ! jQuery选择器 1. #id : 根据给定的ID匹配一个元素 <p id="myId">这是第一个p标签< ...
- jquery.uploadify文件上传组件
1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...
随机推荐
- 卷积神经网络(CNN)在语音识别中的应用
前言 总结目前语音识别的发展现状,dnn.rnn/lstm和cnn算是语音识别中几个比较主流的方向.2012年,微软邓力和俞栋老师将前馈神经网络FFDNN(Feed Forward Deep Neur ...
- screen 状态为Attached 连不上
用 screen -ls, 显式当前状态为Attached, 但当前没有用户登陆些会话.screen此时正常状态应该为(Detached) 此时用screen -r ,怎么也登不上. 最后找到解决方 ...
- python 字符串的方法和注释
capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符串居中,并使用空格填充至长度 width 的新字符串 c ...
- mysql 5.7数据库支持emoji符号但是程序总算报错Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F...' for column ...
1.线上碰到个问题,端上切换搜狗输入法后,原来限制的表情符号还能输入.数据库使用的是5.7.22版本的,刚开始以为数据库不支持表情符号导致的,但是看了线上的数据库以及字段,都是支持的. show va ...
- 选择 Java 编写 iOS 与 安卓 App的八大理由
[编者按]本文作者为 RoboVM 的 CEO 兼联合创始人 Henric Müller,主要介绍选用 Java 编写移动应用的八大理由.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 在过 ...
- Angular-学习。
今天刚学了点关于Angular的知识,就迫不及待的想跟大家来分享. 1.angular.extend ( )方法可以把一个或多个对象中的方法和属性扩展到一个目的对象中. <script typ ...
- JAVA 判断字符长度
/** * 判断姓名字符长度 * 字符串为空返回0:有中文返回中文字符数:无中文返回2 * @param CustomerSn * @return */ private Integer getName ...
- MsSQL使用加密连接SSL/TLS
说明 应用程序通过未加密的通道与数据库服务器通信, 这可能会造成重大的安全风险.在这种情况下, 攻击者可以修改用户输入的数据, 甚至对数据库服务器执行任意 SQL 命令. 例如,当您使用以下连接字符串 ...
- 委托学习总结(二)匿名方法和lambda表达式
之前总结了委托这个困惑着大多初学者的概念,继续来学习匿名方法和lambda表达式 (1)我们之前写了这样一段代码 //自定义一个委托 public delegate int Expression(in ...
- PHP_CodeSniffer 使用攻略
安装 PHP_CodeSniffer 安装 phpcs phpcs 是 PHP 代码规范的检测工具. # 下载 $ curl -OL https://squizlabs.github.io/PHP_C ...