交换两个元素的位置,将元素上移或下移
时间:2020-05-14
本文章向大家介绍交换两个元素的位置,将元素上移或下移,主要包括交换两个元素的位置,将元素上移或下移使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
项目中需要的一个功能,简化成两个小的demo,每个都有js和jq两个版本
1.交换两个元素的所在位置
点击转换更换两个元素的位置,html略过,直接上js版代码
var btn = document.querySelector('.btn') function insertEle(ele,targetEle){//将某元素插到targetEle元素前 targetEle.insertAdjacentElement('beforeBegin',ele) } function changePos(id1,id2){//交换两个元素的位置必须为相邻元素,id分别为要交换元素的id var ele1 = document.querySelector('#'+id1); var ele2 = document.querySelector('#'+id2); var medium = document.createElement('a'); //中间元素 参考交换两个变量的值的方法引入中间元素 insertEle(medium,ele2); // 将中介元素插到元素2前 insertEle(ele2,ele1); // 将元素2插到元素1前 insertEle(ele1,medium); // 将元素1插到中介元素前 document.body.removeChild(medium) //删除中介元素 } btn.onclick = function(){ //点击调用 函数 changePos('a','b') }
jq版会简洁很多
function change(id1,id2){ var medium = document.createElement('a'); //思路一样引入中间元素 $('#'+id2).after(medium) $('#'+id1).after($('#'+id2)) $(medium).after($('#'+id1)) $(medium).remove() } $('.btn').click(function(){ change('a','b') })
先点击要移动的元素,然后在点击上移或者下移
js版代码
var id var box = document.querySelector('.box').children console.log(box) for(let i =0;i<box.length;i++){ // box[i].onclick = ()=>{ //给每个元素添加点击事件,点击切换id,也就是要移动的元素,但这种写法有一个bug我简单描述一下 // id = box[i]; //这样循环后box[0] click后 id = box[0],看似没问题,但box内的元素顺序在元素移动后会改变,而循环只执行这一次 // console.log(id); //也就是说 最初的第一个元素点击后 id总等于最新的box[0] // console.log(i); // } box[i].onclick = function(){ id = this } } var up = document.querySelector('.up') var down = document.querySelector('.down') up.onclick = ()=>{ console.log(id) console.log(id.previousElementSibling,'前兄弟元素') //上移就找对应元素之前的兄弟元素,把他插到兄弟元素之前 try{ var preEle = id.previousElementSibling insertEle(id,preEle) //这个还是最上面使用的将元素插到对应元素前的函数 } catch(err){ console.log(err) } } down.onclick = ()=>{ console.log(id.nextElementSibling,'后兄弟元素') //下移就找对应元素后面的兄弟元素,把后面元素前提 try{ var nextEle = id.nextElementSibling insertEle(nextEle,id) } catch(err){ console.log(err) } }
Jq版本也比较简单 思路和js版一样
var id $('.box>div').click(function(){ id = this }) $('.up').click(()=>{ try{ $(id).prev().before($(id)) } catch(err){ console.log(err) } }) $('.down').click(()=>{ try{ $(id).next().after($(id)) } catch(err){ console.log(err) } })
原文地址:https://www.cnblogs.com/ybhome/p/12886988.html
- js中多个Date对象变量间赋值互相影响
- 并发编程之Executor,Executors,ExecutorService和ThreadPoolExecutor
- 【DeveMobile实例】d3.js 与Trianglify 制作SVG格式Low-Poly 特效
- 未来人工智能将把人类分为3层,而你会在哪一层呢?
- IIS 7.0探索用于 Windows Vista 的 Web 服务器和更多内容
- 初学Python 之抓取当当网图书页面目录并保存到txt文件
- JavaScript 基础(二)数组
- 限制扫码付款额度,支付宝和微信要被“祭旗”?
- 拖动条SeekBar及星级评分条
- 【DeveMobile实例】利用Mobile Detect 制作单独移动端页面项目
- 互联网+智能物流高峰论坛举行运的易现场签约完成战略布局
- Quartz.net通过配置文件来完成作业调度
- JavaScript 基础(一)
- 我也来说说.net开源
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于Java使用groupingBy分组数据乱序问题
- 详解 java CompletableFuture
- 从一个问题来解释下什么是mysql的可重复读
- 每个人都用得到的频数分布直方图
- 利用箱线图巧剔异常值
- dubbo服务接口设计的几个建议
- 使用kafka连接器迁移mysql数据到ElasticSearch
- 这可能是讲雪花算法最全的文章
- 带你了解控制线程执行顺序的几种方法
- 一文说透访问者模式
- 从一个生产上的错误看kafka的消费再均衡问题
- map和object相互转换的几种方法和对比
- Elasticsearch java API客户端介绍
- 如何优雅的判断一个对象的属性是否全部为空
- 内存分析工具MAT的使用入门