用户定制应用顺序

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

拖放是一种常见的特性,即抓取对象后移动到另一个位置后放下。在 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>
相关推荐
cypking几秒前
Vue 3 + Vite + Router + Pinia + Element Plus + Monorepo + qiankun 构建企业级中后台前端框架
前端·javascript·vue.js
San30.12 分钟前
ES6+ 新特性解析:让 JavaScript 开发更优雅高效
开发语言·javascript·es6
雨雨雨雨雨别下啦44 分钟前
【从0开始学前端】vue3简介、核心代码、生命周期
前端·vue.js·vue
simon_93491 小时前
受够了压缩和收费?我作为一个码农,手撸了一款无限容量、原图直出的瀑布流相册!
前端
e***87701 小时前
windows配置永久路由
android·前端·后端
u***27612 小时前
TypeScript 与后端开发Node.js
javascript·typescript·node.js
星空的资源小屋2 小时前
跨平台下载神器ArrowDL,一网打尽所有资源
javascript·笔记·django
Dorcas_FE2 小时前
【tips】动态el-form-item中校验的注意点
前端·javascript·vue.js
小小前端要继续努力2 小时前
前端新人怎么更快的融入工作
前端
八月ouc2 小时前
解密JavaScript模块化演进:从IIFE到ES Module,深入理解现代前端工程化基石
javascript·es6·模块化·cmd·commonjs·amd·iife