用户定制应用顺序

经常会有这样的个性化需求,用户希望可以在页面上按自己的偏好拖放移动应用图标,而且还能保存,下次访问该页面时应用图标就是按自己上次保存的顺序展示的。

拖放是一种常见的特性,即抓取对象后移动到另一个位置后放下。在 HTML5 中,拖放是标准的一部分,任何元素只要将draggable属性设置为"true"就能够拖放。

前端JS从后端获取到可显示应用列表和用户定制的应用显示顺序,在例程中直接写在json变量里了。用户对图标进行一顿拖放后,点击"显示app顺序"按钮,页面弹窗显示当前app顺序,JS可以把app顺序传到后端,更新用户定制的app顺序,这样可以满足用户对图标显示顺序的个性化要求。

html 复制代码
<!DOCTYPE html>
<html>
<button name="showorder" id="showorder" style="float: right;">当前app顺序</button>
<ul id="applist">
</ul>
<script src="jquery-3.6.1.min.js"></script>
<script>

var srcdiv = null;

var applist=[
{"appid":"app1","appdesc":"百度","appurl":"https://www.baidu.com","applogo":"https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png"},
{"appid":"app2","appdesc":"CSDN","appurl":"https://www.csdn.net","applogo":"https://img-home.csdnimg.cn/images/20201124032511.png"},
{"appid":"app3","appdesc":"中国日报网","appurl":"https://www.chinadaily.com.cn/","applogo":"https://www.chinadaily.com.cn/image_e/2016/logo.jpg"}
];

var apporder=["app3","app2","app1"];

//$.get(url,(obj)=>{applist=obj.applist,apporder=obj.apporder},"json")

function allowDrop(ev) { ev.preventDefault(); }

function drag(ev,divdom) { srcdiv=divdom; }

function drop(ev,divdom) { 
	ev.preventDefault();
	if (srcdiv != divdom) { document.getElementById("applist").insertBefore(srcdiv, divdom); }
}

$(document).ready(()=>{
	apporder.forEach(itm=>{
		let item=applist.find(app=>(app.appid==itm));
		$("#applist").append(`<li οndrοp="drop(event,this)" οndragοver="allowDrop(event)" draggable="true" οndragstart="drag(event, this)"><div id="${item.appid}" ><a href="${item.appurl}" target="_blank"><img src="${item.applogo}"><p>${item.appdesc}</p></a></div></li>`)
		})

	$("#showorder").click(()=>{ 
		let appids=[];
		$("#applist li div").each(function(index) { appids.push($(this).attr("id")); });
		alert(appids)
		//$.post(url,{"neworder":appids})
		})

})

</script>
</html>
相关推荐
FungLeo9 小时前
成为全栈·React 管理后台篇·总复盘:从“接口能调通”到“后台值得使用”
前端·react.js·前端框架·项目复盘·成为全栈
Csvn11 小时前
并发模式:让渲染学会排队、插队和让路
前端
可乐鸡翅yeah_11 小时前
新手梳理:M3U8 线上问题,哪些是前端锅,哪些是后端锅
前端·ios·音视频·实时音视频·m3u8·音视频在线播放
Flynt11 小时前
Linear 用 1000 个 PR 换掉 styled-components,我写了 200 个按钮,把这笔账复现了一遍
前端·css·preact
JavaGuide12 小时前
NVIDIA 又开源了!这次给 AI Agent 加上权限管控
前端·后端
excel12 小时前
prisma 如何处理数据库竞态
前端·数据库·后端
莪_幻尘13 小时前
Skill 体检:30 个 Skill 全凭感觉?体检器先自曝了 8 个“假 0 分
前端·人工智能·llm
风骏时光牛马13 小时前
AI模型综合能力评测:性能、指令遵循与多场景实测对比
前端
Frag0ut13 小时前
Chrome与Chromium内核浏览器在Windows 11上的新特性全景解析
前端·chrome·windows·web安全·chromium·gemini ai·playready drm
hiahiahia12314 小时前
实现完整 Tool Dispatcher
开发语言·前端