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

修改前:

//点击移位
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. jetty服务器数据源配置JNDI-Oracle,MySQL,SQLServer,DB2等 (转)

    下载jetty 下载jetty服务器(8.1.0.RC2),解压到任意目录下 http://dist.codehaus.org/jetty/jetty-hightide-8.1.0/jetty-hig ...

  2. Javascript 正则表达式简述

    本文地址:http://www.cnblogs.com/blackmanba/p/regular-expressions-introduce.html 或者 http://forkme.info/re ...

  3. Electron 问题

    打包 Mac 桌面程序时报上述错误 E:\research\node\XXX>electron-packager ./ XXX --platform=darwin --arch=x64 --ic ...

  4. TensorFlow初学

    TensorFlow初学 基本概念 1.激活函数和成本函数 激活函数(activation function):一般是非线性函数,就是每个神经元通过这个函数将原有的来自其他神经的输入做一个非线性变化, ...

  5. 我用windows live Writer 写个日志试试看

    我用windows live Writer 写个日志试试看. 哈哈 播放幻灯片 全部下载

  6. windows下Word使用-快捷键

    1.word全屏显示——Alt+U+V 2.上标——Ctrl+Shift+= 3.下标——Ctrl+=

  7. UVALive-8079 Making a Team 排列组合公式化简

    题目链接:https://cn.vjudge.net/problem/UVALive-8079 题意 n个人组队,队伍人数小于等于n,每个队伍需要4个不同的职务的领导. 问这n个人可以组成多少队? n ...

  8. 在centos里安装Nginx

    (1)下载Nginx的RPM包 wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx ...

  9. Shell(五)Shell输入/输出重定向

    Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令 ...

  10. Ubuntu下使用crontab部署定时任务

    Ubuntu下使用crontab部署定时任务 安装cron apt-get install cron 开启crontab日志 默认情况下的日志是没有开启的,我们需要找到 /etc/rsyslog.d/ ...