本篇文章给大家带来的内容是关于H5实现拖拽排序的代码 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一、需求

豆果食谱系统,sku列表实现拖拽排序,如图:

二、HTML5拖放API的知识点

首先我们得知道元素怎么才可以被拖放,需要设置它们的draggable属性,其中img和a标签的dragable属性默认是true,不需要我们手动设置。

拖放API的监听事件如下:

dragstart: 源对象拖拽开始;

drag: 源对象拖拽的过程中;

dragend: 源对象拖拽结束;

dragenter: 进入过程对象区域;

dragover: 在过程对象区域内移动;

dragleave: 离开过程对象区域;

drop: 源对象拖放到目标区域。

对于这几个事件,我们要结合需求利用preventDefault()取消它的默认行为。

在拖放事件中,提供dataTransfer用于在源对象与目标对象之间传递数据,dataTransfer一般通过e.dataTransfer调

用,dataTransfer的方法如下:

setData(format, data)

getData(format);

clearData()。

三、html结构:

p.cp-sku-show

span.border-grey

span span span

img

四、拖拽实现思路

1、将要拖拽的span.border-grey的draggable的属性设置为"true";

2、判断拖拽源和放置目标的index,如果放置目标的index大,则将拖拽源向后插入,反之,则将拖拽源向前插入;

五、实现代码"+result.skuId+""+result.skuName+"" +

"// 拖动什么

function drag(e){

e.dataTransfer.setData('Text', e.target.id);

// console.log($('.border-grey'))

$('.border-grey').each((index,element) => {

if(element.id === e.target.id){

// 将拖动的元素的index记录下来,与targetIndex进行比较,判断是向前插入还是向后插入

COMMON.index.originIndex = index;

}

})

// console.log('originIndex',COMMON.index.originIndex)

}

// 何处放置

function allowDrop(ev){

ev.preventDefault();

}

// 进行放置

function drop(ev){

ev.preventDefault();

/**

* 判断不在控制范围内

*/

if (ev.target.className != "border-grey" && ev.target.parentElement.className != "border-grey" && ev.target.parentElement.parentElement.className != "border-grey") {

return;

}

var id = "";// 放置目标id

// 如果放置的位置是span.border-grey

if(ev.target.className == "border-grey"){

// 如果放置的位置是span.border-grey元素

id = ev.target.id

}else if(ev.target.parentElement.className == "border-grey"){

// 如果放置的位置是span.border-grey 下的span子元素

id = ev.target.parentElement.id

}else if(ev.target.parentElement.parentElement.className == "border-grey"){

// 如果放置的位置是span.border-grey 下的img子元素

id = ev.target.parentElement.parentElement.id

}

$('.border-grey').each((index,element) => {

if(element.id === id){

// 将放置的元素的index记录下来,与targetIndex进行比较,判断是向前插入还是向后插入

COMMON.index.targetIndex = index;

}

})

var data=ev.dataTransfer.getData("Text");

// 放置目标的index大于拖拽元素的index,说明是向后插入,反之亦然

if(COMMON.index.targetIndex > COMMON.index.originIndex){

$("#"+id).after(document.getElementById(data));

}else{

$("#"+id).before(document.getElementById(data));

}

}

相关推荐:

php实现拖拽排序,H5实现拖拽排序的代码相关推荐

  1. 拖拽删除元素、拖拽排序、拖拽预览图片和拖拽移动元素

    介绍 HTML5 提供了专门的拖拽与拖放的 API,目前各浏览器都已支持,包括 IE.HTML 拖放(Drag and Drop)接口使应用程序能够在浏览器中使用拖放功能.例如,用户可使用鼠标选择可拖 ...

  2. avue表头拖拽排序,vuedraggable拖拽

    表头拖拽排序应用的是不同人员对数据关注点不一样,表格太长,可以把主要关注的列拖拽排序到前面,方便查看. 然后把当前用户,当前页面的排序记录在本地缓存,这样用户在下次登陆仍然能够使用自己的排序. 拖拽用 ...

  3. 拖拽平台-h5拖拽设计渲染原理

    参考平台: (开源版本的拖拽生成H5平台,类似易企秀.人人秀.夸克h5的可视化搭建系统) 具体技术介绍和内容: 基于Vue2.0开发,通过拖拽的形式,生成页面的工具,类似易企秀.百度 H5 等工具的可 ...

  4. html可视化拖拽框架,前端可视化拖拽方案

    技术栈:react+dva+less+umi+antd+node+ sortable umi:组件库设计考虑的一个重要的问题就是体积和渲染问题, 一旦组件库变的越来越多, 那意味着页面加载会非常慢,所 ...

  5. 设置拖拽事件,获取拖拽内容

    设置dragEnter 设置DragDrop using System; using System.Collections.Generic; using System.ComponentModel; ...

  6. js 拖拽生成html,js拖拽插件 js 拖拽控件生成自定义表单 怎么实现

    想请教一个js的问题,拖拽控件 js 拖拽控件生成自定义表单 怎么实现 说说步骤吧 监听mousedown事件 - 获取鼠标点击元素,判断是否可拖拽 - 设置flag做标记 - 建一个tempDOM, ...

  7. 易格斯拖链选型手册_拖链相关知识

    下载全文PDF文件联系小编,希望大家在下载资料的同时多多支持! 一.综述 塑料拖链的性能介绍 1)拖链外形似坦克链,由众多的单元链接组成,链接之间转动自如. 2)相同系列的拖链的内高.外高.节距相同, ...

  8. 排序(尝试对时间戳做排序)

    案例1(时间戳排序) <template><view class=""><text @tap="shijian">打印一下& ...

  9. mysqlorderby数字字符串排序_Python中的元组排序和深度比较

    比较Python中的东西.这听起来几乎是不需要教的,但是我发现Python的比较运算符经常被Python新手误解和低估. 我们来回顾一下Python的比较运算符如何处理不同类型的对象,然后看看如何使用 ...

最新文章

  1. zookeeper系列(二)实战master选举
  2. 浅玩JavaScript的数据类型判断
  3. clover写入efi_MAC 10.14 安装教程10-基于黑果小兵大神EFI文件的修改过程
  4. 皮尔森相关系数(Pearson correlation coefficient)
  5. ctf不允许上传该类型php,d3ctf easyweb题解
  6. mos管h桥电机驱动电路与设计原理图-KIA
  7. android 修改以太网mac地址_Android5.1修改以太网MAC地址(SElinux)
  8. 使用Vue开发Chrome插件
  9. 速卖通关键词挖掘工具_SEMer如何利用工具挖掘更多的关键词?拓词技巧
  10. 生成PDMS管口方位图 python方案
  11. CommonAPI编写代码
  12. Human Muscles/Musculature (人体肌肉组织)
  13. vue路由变化时使用axios取消所有请求
  14. 计算机电源可调电阻,电脑ATX电源改0V-30V可调电源,电流7A
  15. mysql 导入tsv文件,MySQL导出TSV格式文件
  16. 深度学习课程大纲_MIT深度学习基础-2019视频课程分享
  17. 视觉导航路径编辑器使用教程
  18. Linux userdel 和 deluser 的区别
  19. 苹果屏和android屏哪个更真实,苹果手机的屏幕,和安卓旗舰有何差距,苹果真的就是最棒的嘛?...
  20. 大话西游精彩影评(一)

热门文章

  1. 第一讲:反事实因果分析框架(2)
  2. 电子计算机辅助设计软件,电子线路计算机辅助设计.pdf
  3. 三轴加速度计、三轴陀螺仪、三轴磁力计
  4. topik怎么读_TOPIK韩语等级考试难不难?过来人全方位解读
  5. 用 Python 脚本实现对 Linux 服务器的监控
  6. [已解决]Vagrant was unable to mount VirtualBox shared folders. This is usually because the filesystem “
  7. COSMIC: COmmonSense knowledge for eMotion Identification in Conversations
  8. 怎么用Camtasia给视频添加片头片尾
  9. kali linux 下载与 安装教程
  10. 长安渝北工厂机器人_面包车界的悲情品牌-「长安凯程欧尚」为何不敌通用五菱宝骏?...