jquery的clone()引发的问题,下拉框点击没有反应
此段代码是对某块元素的移位:上移、下移。对比修改前后的两段代码:
修改前:
//点击移位
function move(obj,posi){
var al=$(obj).parent('li').parent('.favoreeEditList').siblings('.favoreeEditList').length+1;
var curObj = $(obj).parent('li').parent('.favoreeEditList');
var newObj=curObj.clone(curObj);
var nextObj=curObj.next('.favoreeEditList');
var preObj=curObj.prev('.favoreeEditList'); var upHtml = '<a class="btnDel2 upMove" onclick="move(this,\'up\')">上移</a>';
var downHtml = '<a class="btnDel2 downMove" onclick="move(this,\'down\')">下移</a>'; if(posi=='down'){
if(curObj.index()==0){
newObj.children('li').first().find('.downMove').before(upHtml);
nextObj.children('li').first().find('.upMove').remove();
}
if(curObj.index()==al-2){
newObj.children('li').first().find('.downMove').remove();
nextObj.children('li').first().find('.upMove').after(downHtml);
}
nextObj.after(newObj);
curObj.remove();
}
else if(posi=='up'){
if(curObj.index()==al-1){
newObj.children('li').first().find('.upMove').after(downHtml);
preObj.children('li').first().find('.downMove').remove();
}
if(curObj.index()==1){
newObj.children('li').first().find('.upMove').remove();
preObj.children('li').first().find('.downMove').before(upHtml);
}
preObj.before(newObj);
curObj.remove();
}
}
修改后:
//点击移位
function move(obj,posi){
var al=$(obj).parent('li').parent('.favoreeEditList').siblings('.favoreeEditList').length+1;
var curObj = $(obj).parent('li').parent('.favoreeEditList');
//此处对应的是同一个引用
var newObj=curObj;
var nextObj=curObj.next('.favoreeEditList');
var preObj=curObj.prev('.favoreeEditList'); var upHtml = '<a class="btnDel2 upMove" onclick="move(this,\'up\')">上移</a>';
var downHtml = '<a class="btnDel2 downMove" onclick="move(this,\'down\')">下移</a>'; if(posi=='down'){
if(curObj.index()==0){
newObj.children('li').first().find('.downMove').before(upHtml);
nextObj.children('li').first().find('.upMove').remove();
}
if(curObj.index()==al-2){
newObj.children('li').first().find('.downMove').remove();
nextObj.children('li').first().find('.upMove').after(downHtml);
}
nextObj.after(newObj);
}
else if(posi=='up'){
if(curObj.index()==al-1){
newObj.children('li').first().find('.upMove').after(downHtml);
preObj.children('li').first().find('.downMove').remove();
}
if(curObj.index()==1){
newObj.children('li').first().find('.upMove').remove();
preObj.children('li').first().find('.downMove').before(upHtml);
}
preObj.before(newObj);
}
// 更新上移、下移
addMove();
}
标红的是修改的内容:
1.var newObj=curObj.clone(curObj);修改为var newObj=curObj;
2.curObj.remove();删除
思路:
原来的思路:
是将要移动的元素先clone给另一个对象,然后再将原来的元素删除,复制的对象进行前、或者后追加。
后来的思路:
原来的思路复制对象多此一举,并且导致clone的对象追加后,模块中的下拉框点击没反应。
当前对象并不用复制并删除,而是直接追加,因为操作的是这个元素引用,当点击当前元素下移,直接追加在下一个元素的后面,那么此模块从原来的的位置删除直接追加在前、后面
(因为操作的是同一个对象。举例说明:相当于两个杯子交换了一下位置,并不是将要移位的杯子复制出来一个,将原来的删除,再将复制的追加)。
jquery的clone()引发的问题,下拉框点击没有反应的更多相关文章
- 雷林鹏分享:jQuery EasyUI 表单 - 创建树形下拉框
jQuery EasyUI 表单 - 创建树形下拉框 树形下拉框(ComboTree)是一个带有下列树形结构(Tree)的下拉框(ComboBox).它可以作为一个表单字段进行使用,可以提交给远程服务 ...
- 第二百二十七节,jQuery EasyUI,ComboTree(树型下拉框)组件
jQuery EasyUI,ComboTree(树型下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解EasyUI中ComboTree(树型下拉框)组件的使用方法,这个 ...
- 第二百二十四节,jQuery EasyUI,ComboGrid(数据表格下拉框)组件
jQuery EasyUI,ComboGrid(数据表格下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 ComboGrid(数据表格下拉框)组件的 ...
- JQuery Easyui/TopJUI 创建多级联动下拉框(纯HTML实现!!!)
JQuery Easyui/TopJUI 创建多级联动下拉框(纯HTML实现!!!) 效果展示: 代码如下: <form data-toggle="topjui-form"& ...
- jQuery EasyUI/TopJUI创建树形表格下拉框
jQuery EasyUI/TopJUI创建树形表格下拉框 第一种方法(纯HTML创建) <div class="topjui-row"> <div class= ...
- 【jquery】ajax 动态 改变 select下拉框选中的值
//JS<script type="text/javascript> //ajax动态给添加原料的[商品名称]下拉框绑定selected属性 $("#origin_co ...
- Bootstrap 下拉框点击没反应
应该是第一次点击下拉框没反应,我把HTML复制出来单独运行,都是好的,就是在项目里面无法运行 哪里的js出问题了?找不到原因,控制台里的js也不报错 解决方法: $(function () { $(' ...
- jQuery多级联动美化版Select下拉框
在线演示 本地下载
- ionic中select下拉框点击无反应解决办法
两种解决办法: 1.在select外的div加入属性 data-tap-disabled=”true” 2.找到ionic.bundle.js文件 的下面这个函数,添加如图两行代码
随机推荐
- python中黏包现象
#黏包:发送端发送数据,接收端不知道应如何去接收造成的一种数据混乱现象. #关于分包和黏包: #黏包:发送端发送两个字符串"hello"和"word",接收方却 ...
- Redis学习笔记(三) 基本命令:Key操作
参考:http://doc.redisfans.com/ del key 删除给定的一个或多个Key(多个key用空格隔开),删除成功返回1,当key不存在时,返回0:例:del no-exist-k ...
- HTML5音频可视化频谱跳动代码
今天学习到用canvas来写 HTML5音频可视化频谱跳动代码 将代码在此做一总结: <!DOCTYPE html> <html lang="en"> ...
- 个人对于React的Diff算法的一点疑问(待更新)
本人对于Diff算法也并未做深入研究,只是大概的看过一些博文了解了些原理,但依然有了如下疑问 : 对于vdom所表示的对象中,若在该oldObj和newObj之间,发现一个元素节点所表示的子对象不见了 ...
- GreenDao 3.X之基本使用
在GreenDao 3.X之注解已经了解到GreenDao 3.0的改动及注解.对于数据库的操作,无异于增删改查等四个操作.下面我们将了解GreenDao 3.X如何使用? AbstractDao 所 ...
- Mac 如何寻找Mac自带的IDLE
Mac 如何寻找Mac自带的IDLE 每次要打开IDLE时,需要如下动作:打开terminal --> 输入idle --> 回车,就自动打开IDLE了 图标如下: 选择在“Finder中 ...
- 12 个最佳 GNOME(GTK)主题
作者: Phillip Prado 译者: LCTT 郑 | 2019-04-14 09:45 评论: 1 收藏: 2 让我们来看一些漂亮的 GTK 主题,你不仅可以用在 Ubuntu 上,也可以 ...
- 利用Java反射机制对实体类的常用操作工具类ObjectUtil
代码: ObjectUtil类: import java.lang.reflect.Field; import java.math.BigDecimal; import java.text.Simpl ...
- laydate日期范围控制
1.html <input type="text" id="startTime" name="startTime" class=&qu ...
- mysql对事务的支持
起因:因为只是需要编写一个接口,无需使用框架,但是又要求对数据库的操作支持事务,所以直接使用mysql自带的事务进行处理 mysql自带对事务的支持,但是他默认是关闭的,需要我们手动打开,打开mysq ...