此段代码是对某块元素的移位:上移、下移。对比修改前后的两段代码:

修改前:

//点击移位
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()引发的问题,下拉框点击没有反应的更多相关文章

  1. 雷林鹏分享:jQuery EasyUI 表单 - 创建树形下拉框

    jQuery EasyUI 表单 - 创建树形下拉框 树形下拉框(ComboTree)是一个带有下列树形结构(Tree)的下拉框(ComboBox).它可以作为一个表单字段进行使用,可以提交给远程服务 ...

  2. 第二百二十七节,jQuery EasyUI,ComboTree(树型下拉框)组件

    jQuery EasyUI,ComboTree(树型下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解EasyUI中ComboTree(树型下拉框)组件的使用方法,这个 ...

  3. 第二百二十四节,jQuery EasyUI,ComboGrid(数据表格下拉框)组件

    jQuery EasyUI,ComboGrid(数据表格下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 ComboGrid(数据表格下拉框)组件的 ...

  4. JQuery Easyui/TopJUI 创建多级联动下拉框(纯HTML实现!!!)

    JQuery Easyui/TopJUI 创建多级联动下拉框(纯HTML实现!!!) 效果展示: 代码如下: <form data-toggle="topjui-form"& ...

  5. jQuery EasyUI/TopJUI创建树形表格下拉框

    jQuery EasyUI/TopJUI创建树形表格下拉框 第一种方法(纯HTML创建) <div class="topjui-row"> <div class= ...

  6. 【jquery】ajax 动态 改变 select下拉框选中的值

    //JS<script type="text/javascript> //ajax动态给添加原料的[商品名称]下拉框绑定selected属性 $("#origin_co ...

  7. Bootstrap 下拉框点击没反应

    应该是第一次点击下拉框没反应,我把HTML复制出来单独运行,都是好的,就是在项目里面无法运行 哪里的js出问题了?找不到原因,控制台里的js也不报错 解决方法: $(function () { $(' ...

  8. jQuery多级联动美化版Select下拉框

    在线演示 本地下载

  9. ionic中select下拉框点击无反应解决办法

    两种解决办法: 1.在select外的div加入属性 data-tap-disabled=”true” 2.找到ionic.bundle.js文件 的下面这个函数,添加如图两行代码  

随机推荐

  1. 剑指offer——01二维数组中的查找(Python3)

    题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  2. 使用右键打开Visual Code

    Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\Visual Code]@="Edit with Visual ...

  3. ROS-SLAM-自主导航

    前言:无. 前提:已下载并编译了相关功能包集,如还未下载,可通过git下载:https://github.com/huchunxu/ros_exploring.git 一.启动仿真环境 cd ~/ca ...

  4. 数据库 The Network Adapter could not establish the connection解决方案

    连接数据库 注意 url ip地址换的时候 oracle 里的listener.ora thnsnames.ora也要随之变化 重启数据库 不然可能会报出 java.sql.SQLException: ...

  5. WIN7把任务栏的的蓝牙图标误删了找回方法

    当时我删了以后,在网上找方法,都说—— 点击任务栏下面的三角箭头,选择自定义,里面有蓝牙图标选项,选择显示图标和通知. 可是我发现我的自定义选项里面就没有蓝牙图标选项啊... 故事的最后,我终于找到了 ...

  6. mysql case when then 使用

    建表:create table hank (id int,name varchar(20)); 插入数据:insert into hank values(1,'A');insert into hank ...

  7. MySQL 5.6.26 通过frm & ibd 恢复数据过程

    在A服务器上创建数据库yoonroot(yoon)> show create table yoon\G*************************** 1. row *********** ...

  8. Markdown标记语言

    Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber).它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”.这种语言吸收了很 ...

  9. C语言-实现整数倒序输出

    Action() { //实现一个3位数的倒序输出(123输出321) int n; int m=321; n=fun_mod(m,n); lr_output_message("%d&quo ...

  10. RunLoop主要处理以下6类事件

    1.Observer事件,runloop中状态变化时进行通知.(微信卡顿监控就是利用这个事件通知来记录下最近一次main runloop活动时间,在另一个check线程中用定时器检测当前时间距离最后一 ...