用户定制应用顺序

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

拖放是一种常见的特性,即抓取对象后移动到另一个位置后放下。在 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>
相关推荐
Ward的AI产品实战2 小时前
开源 AI 网关 Magpie 调优终结篇:顺位排错、跨家族对抗审查与 5 大路由组重构(下篇)
前端·人工智能
Highcharts.js2 小时前
BI可视化图表“维护难”问题的解决方案
开发语言·前端·javascript·编辑器·ecmascript·bi·highcharts
广州华水科技2 小时前
单北斗GNSS在建筑形变监测中的应用与优势分析
前端
hunter_0763 小时前
Swift、Objective-C++ 与 Flutter 如何调用 C++:从混编接入到内存安全
前端
Java后端的Ai之路3 小时前
前端技术Vue-13-安装webpack与vuejs
前端·vue.js·webpack
倚窗听花_3 小时前
IIS部署前端Vue项目
前端·javascript·vue.js
yixun_gdas3 小时前
政企网站错敏巡查:错敏都藏在哪些位置?
开发语言·前端·javascript·内容运营
小羊没烦恼!3 小时前
.NET 11 Runtime Async 详解
java·运维·开发语言·javascript·python
哇嘎呀3 小时前
RHCSA题目
java·服务器·前端
周厉3 小时前
ERP系统全景解析:核心模块与业务逻辑框架
java·服务器·前端