js~一个列表中包含上移下移删除等功能
最近做了一个项目,包括了一个列表页,为了用户体验,操作均使用JS实现,其中包括在列表中实现上移,下移,删除等功能,前台JS,后端数据修改使用AJAX,本文主要说一下前台JS这块
先看一下页面的截图
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYEAAAC/CAIAAACXPPcaAAASoUlEQVR4nO2cS2obSxtAaxLCHQfCP80ieg1ZQBZQiwn0IIOsIzQxuYiQiU0gC+hLyJ0ooxBPYmMo0EUgBAL9g37V46tSq91yIfschJHr8XWVoY6/qm5J7QEA8qFyDwAAnjQ4CABygoMAICc4CAByMt1Bv379ury8/PTpUwUAMJWJDqrrerFYLJfLm5sbAwAwlSkOur6+XiwWt7e3uQcPAGfPFAddXV0tl8vcIweAx8AUB11cXNzd3eUeOQA8BqY4qKqq3MMGgEcCDgKAnOAgAMjJSRyklFJKHb72uGbnzlFzfAp/EACbB3WQGoHfpy4LpfSxiVelu3h217osmsKirIPLaKusbyi0bCcyciAHW3pzt9tb7+uyiP0NElUAZ8BsDhpjFnulpQuNMZZIZBFEqcui6xJ964T0PFfp7jerjzNTcb7iWMY4KBZ5aFTp6N8gUQVwDsgOWq1W3759+/Pnz7EOSr/3SuL2sTORSQpyhKIr461V+5fWdENlXWlttxxieeM8KseJCUt0UDAfpZRSuhzcWWmlirLqq8iE4FwRHPTPP/+8ePFCKfX8+fMPHz7M7iC7PJpBtJaotLvA0klHSJ/IuOlC/1tb75jG695VhIKw5yhe3Wsgtvf+VmK0YXjtuyFTi40c4FwQHPTmzZt+qb969epYB3lyCZXheSSllbos3DToOAc5S9UK42ZK8pFKkx4FxQdn5zU2hwRkhw3jd8PrB1+XRVEMG0R/VwlwdggOev36db8MXr58Oc1BzZu3b9+O1I1Y1exCpv2fbzYrw8q1wggKkhey39CMyH1iLdMOCpu5U3EHX8hbRYBzRHDQly9fnj171hjh3bt3RznIM47noLCl9G9/wN+JjSW4l+bIJDBLfCH3doqNOW1VI5lF9E5KbV4apJQiDYJHhHwm/ePHj/fv33/9+lWsPXgelC4fU2KMEXZio/Zi4r2swTthtbMTswUlRuqGER+A0+BgEuRNR4jsnAYpXVnmIQ2C82fme/Njysc6SNqJHXaQfUPNSxncAqtDeKNebmoPIzoAKQMKM6a0lYyx/NKeTGlrc9kdb0UOrQDOiGwOCjnVFE9AYrQHkhq3ZVRAAE+GEzoo5pexeRAAPAH4zCoA5AQHAUBOcBAA5AQHAUBOZnVQpfdK7ZXaK70eSutN0RQWm+AbMza6XAVhVmWxL4bytVa7sjZ1uWuCF06Xtla+tBywu7gccOjSBhRGLgeUZ5qYPgDM6KC63HXLzFqi9aZQu+4bM3bOuq03hdqHz7ZUeq+6Lm1YvbaCt9KJ1Ap28AIGo3UCDmOLK0MMKM80MX0AMGZGB63KwhJKtW3ykUpbRqi2Qy5QbZWS1VCUG6221RB2V9bNT7vNyq0VLh0JaIf1A1a6i1Nti2InJlZewL6LONPo9AGg5STnQX0y4qYY/SJss4O1p4bWBZ6q9NoYp+WwsF3duJeOBGyJBLRKushrbSVryYDhTCPTB4CBEzhoWMDuqmv2TUO7elPYv3ZCCdIc45il2qpWCk4u419aDtgjBpQZuicCijNNTx8AjJndQWutnDTEWnXujslbydb5i70hGtZwf7Krt21y4acVzqXlgDZhwAjtOJMBxZmmpw8AxphZHRScMTuLsN4U7s7LXsnDXa3upSt50XZnyW5tcGkpoPwHsA6npWF3F0oHFGeanj4AGGPmc5B1A8gtbBZeeLtqVRbSmuzTDSvvGDTRu8a+byVeOgxol4UB5WGbSgf31MVbZuJMU9MHgIaZHNQ/a+M9UBN9Bid287s9c/GSoOFpne4kyDknFi/tBvTwAhrj7bDa23bSQz1WQLuLONPkI0gAYHhOGgDygoMAICc4CABygoMAICc4CAByMr+DDn4pa99grq9vvX/AREe+YxbgpDycg5RqX2FJ2MWuEl+TA8Y6pssB4EQ8dB4k5iwju9wnoG2TMT+PGiEATCaPg8Q1f9KAxzooZjEAmJeTOCjcN3nlduPDQ4xLYXzAkd6J7ewQEMCJyLYXM8m0ReySSHAOBjx4tGQCByUuCgBz8aAO8tIiE8llEgG9ZuMDTtiLxRI6AJiRDA469tBXtMmxASefBKEegJPyoPfm7drxx9IxKRwVcIKDxo8QACaT8zxoTPu5AqbznfA8KPEGAGYk85n0mIU9S8CRDhJjjhkGAExjHgcl7jod9TqjgAAwC3xmFQBygoMAICdTHHRxcXF3d5d75ADwGJjioKurq58/f+YeOQA8BqY46Pr6+vPnz7e3t7kHDwBnzxQH7ff779+/LxaL5XLJpgwA7sNEB+33+9+/f19eXn78+LECAJjKdAcBANwfHAQAOcFBAJATHAQAOcFBAJCT6Q769evX5eXlp0+fch+rA8AZM9FBdV03zwfd3NzkfrwAAM6Yic9JLxYLnpMGgPsz8fNiy+Uy98gB4DHA5+YBICd8fxAA5AQHAUBOcBAA5OQkDlJKqRHf/z6y2bykr/jw4wF44jyog9QI+sZ1WXRlRVlPnZ4VMLxEuv3BKjF4clJ1WejI3y5RBfCYmc1BYxZh//5goal0755KK6Umrs9QE155OM5QVZ59RGOKkf2+lY7qNFEF8KiRHbRarb59+/bnz59jHZR+75XI9gmwdHTk3AKnjPFLrFAM7k1K1Fnbos/rdFkW3XQqrVRRVn0VmRA8OQQH/fPPPy9evFBKPX/+/MOHD7M7yC5P28cY4yloXJfhEt77hFxiNvQmYvtFnE4iVKU7ybTvKt1pZ6gCeGIIDnrz5k2/ol69enWsg1K5gNUyXNvS8JrkYUiCjnWQh5G8E/vVLrRHm2hsJBlZc+knUpdFURT9xOwqgKeF4KDXr1/3C+nly5fTHNS8efv27UjdiFWVVmrSBsULJRnBuahoK7GvKLKY6dwrOrlOXRaWWkmD4OkiOOjLly/Pnj1rltO7d++OcpBnHM9BYUtx2TdMFlB/FSNlJSqSyMTMKM5OlJRdK0Tz0iClFGkQQOxM+sePH+/fv//69atYe/A8KF0+pqRdpIGBYsISrxvGjwlILIkVxoJ7VX5f5zRI6coyD2kQPGFmvjc/pvxwifVoUEO/Qkc6SMxTYg3CX9PlieBC+94vbV6n9ZD/dDfk75nyAZwz2RwUMueskg66TxJkDzXMhk40HYBHzAkdFFuQY0oA4InAZ1YBICc4CABygoMAICc4CAByMquDKr1Xaq/UXun1UFpviqaw2PjP4dUbXa6CMKuy2BdD+VqrXVmbutw1wQunS1srX1oO2F1cDjh0aQMKI5cDyjNNTB8AZnRQXe66ZWYt0XpTqF3zOExd7px1W28KtQ8fiqn0XnVd2rB6bQVvpROpFezgBQxG6wQcxhZXhhhQnmli+gBgzIwOWpWFJZRq2+QjlbaMUG2HXKDaKiWroSg3Wm2rIeyurJufdpuVWytcOhLQDusHrHQXp9oWxU5MrLyAfRdxptHpA0DLSc6D+mTETTH6RdhmB2tPDa0LPFXptTFOy2Fhu7pxLx0J2BIJaJV0kdfaStaSAcOZRqYPAAMncNCwgN1V1+ybhnb1prB/7YQSpDnGMUu1Va0UnFzGv7QcsEcMKDN0TwQUZ5qePgAYM7uD1lo5aYi16twdk7eSrfMXe0M0rOH+ZFdv2+TCTyucS8sBbcKAEdpxJgOKM01PHwCMMbM6KDhjdhZhvSncnZe9koe7Wt1LV/Ki7c6S3drg0lJA+Q9gHU5Lw+4ulA4ozjQ9fQAwxsznIOsGkFvYLLzwdtWqLKQ12acbVt4xaKJ3jX3fSrx0GNAuCwPKwzaVDu6pi7fMxJmmpg8ADTM5qH/WxnugJvoMTuzmd3vm4iVBw9M63UmQc04sXtoN6OEFNMbbYbW37aSHeqyAdhdxpslHkADA8Jw0AOQFBwFATnAQAOQEBwFATnAQAORkfgcd/FLWvsFcX996/4CJjnzHLMBJeTgHKdW+wpKwi10lviYHjHVMlwPAiXjoPEjMWUZ2uU9A2yZjfh41QgCYTB4HiWv+pAGPdVDMYgAwLydxULhv8srtxoeHGJfC+IAjvRPb2SEggBORbS9mkmmL2CWR4BwMePBoyQQOSlwUAObiQR3kpUUmksskAnrNxgecsBeLJXQAMCMZHHTsoa9ok2MDTj4JQj0AJ+VB783bteOPpWNSOCrgBAeNHyEATCbnedCY9nMFTOc74XlQ4g0AzEjmM+kxC3uWgCMdJMYcMwwAmMY8DkrcdTrqdUYBAWAW+MwqAOQEBwFATqY46OLi4u7uLvfIAeAxMMVBV1dXP3/+zD1yAHgMTHHQ9fX158+fb29vcw8eAM6eKQ7a7/ffv39fLBbL5ZJNGQDch4kO2u/3v3//vry8/PjxYwUAMJXpDgIAuD84CABygoMAICc4CABygoMAICfTHfTr16/Ly8tPnz7lPlYHgDNmooPqum6eD7q5ucn9eAEAnDETn5NeLBY8Jw0A92fi58WWy2XukQPAY4DPzQNATvj+IADICQ4CgJzgIADIyUkcpJRSI77/fWSzM+KRTQfgAXhQB6kR+H3qslBK3zvxGunEe7Y5NKO6LGJTSVQBPGZmc9AYs/TvDxYaY4ypdNu7KOt7z9OKHPPIsW28cq9KaFnp6FQSVQCPGtlB//3337dv325ubo51UPq9VxK3T5v+zKUg+yppuYRtRro1jOCH6meky7LoplRppYqy6qvIhODJITjo33///d///qeU+uuvv/7+++/ZHWSXR6XQ5gWVdldm2iPRSZ54IxaaNHxjjKl0N5X2XaW7yQ1VAE8MwUFv3rzpl/qrV6+OdZAnl1AZYRIR1UpdFm4alNFBCZl6P8NfjTHG1EP6Y+qyKIqin5pdBfC0EBz0+vXrfqm/fPlymoOaN2/fvh2pG7Gq2b5MSxBEFcZsmGgTTjAsF38a30FOrlOXhSVX0iB4uggO+vLly7Nnz5ol9+7du6Mc5BnHc1DYMuxl4+/EjppYEHBaiVcudompx2nspUFKKdIggNiZ9I8fP96/f//161ex9uB5ULp8TIkxRtiJHbMXm9FBduHBVCg6SOc0SOnKMg9pEDxhZr43P6Z8rIOkndhIBx1Uycg2Y0oOhO390jxpoLUevNrdkG+r0BA8RbI5aMxebPqsRsQ/2ObgqGJhZ5kCwBPhhA4av7ZndxAAnAt8ZhUAcoKDACAnOAgAcoKDACAnszqo0nul9krtlV4PpfWmaAqLjf8cXr3R5SoIsyqLfTGUr7XalbWpy10TvHC6tLXypeWA3cXlgEOXNqAwcjmgPNPE9AFgRgfV5a5bZtYSrTeF2jWPw9Tlzlm39aZQ+/ChmErvVdelDavXVvBWOpFawQ5ewGC0TsBhbHFliAHlmSamDwDGzOigVVlYQqm2TT5SacsI1XbIBaqtUrIainKj1bYawu7Kuvlpt1m5tcKlIwHtsH7ASndxqm1R7MTEygvYdxFnGp0+ALSc5DyoT0bcFKNfhG12sPbU0LrAU5VeG+O0HBa2qxv30pGALZGAVkkXea2tZC0ZMJxpZPoAMHACBw0L2F11zb5paFdvCvvXTihBmmMcs1Rb1UrByWX8S8sBe8SAMkP3REBxpunpA4AxsztorZWThlirzt0xeSvZOn+xN0TDGu5PdvW2TS78tMK5tBzQJgwYoR1nMqA40/T0AcAYM6uDgjNmZxHWm8Ldedkrebir1b10JS/a7izZrQ0uLQWU/wDW4bQ07O5C6YDiTNPTBwBjzHwOsm4AuYXNwgtvV63KQlqTfbph5R2DJnrX2PetxEuHAe2yMKA8bFPp4J66eMtMnGlq+gDQMJOD+mdtvAdqos/gxG5+t2cuXhI0PK3TnQQ558Tipd2AHl5AY7wdVnvbTnqoxwpodxFnmnwECQAMz0kDQF5wEADkBAcBQE5wEADkBAcBQE7md9DBL2XtG8z19a33D5joyHfMApyUh3OQUu0rLAm72FXia3LAWMd0OQCciIfOg8ScZWSX+wS0bTLm51EjBIDJ5HGQuOZPGvBYB8UsBgDzchIHhfsmr9xufHiIcSmMDzjSO7GdHQICOBHZ9mImmbaIXRIJzsGAB4+WTOCgxEUBYC4e1EFeWmQiuUwioNdsfMAJe7FYQgcAM5LBQcce+oo2OTbg5JMg1ANwUh703rxdO/5YOiaFowJOcND4EQLAZHKeB41pP1fAdL4Tngcl3gDAjGQ+kx6zsGcJONJBYswxwwCAaczjoMRdp6NeZxQQAGaBz6wCQE5wEADkZIqDLi4u7u7uco8cAB4DUxx0dXX18+fP3CMHgMfAFAddX19//vz59vY29+AB4OyZ4qD9fv/9+/fFYrFcLtmUAcB9mOig/X7/+/fvy8vLjx8/VgAAU5nuIACA+4ODACAnOAgAcoKDACAnOAgAcvJ/ClsBm+iEYtIAAAAASUVORK5CYII=" alt="" />
看一下它的HTML结构,当然,这与前台切图有关,后端程序人员只负责写自己的JS这块,我以我们项目为例,看一下它们切的HTML
<ul class="clearfix">
<li class="courseList">
<div class="titDefault clearfix">
<div class="left clearfix">
<span class="dragBtn"></span><span class="tit">内容<em class="contIndex">1</em>:</span><em title="2013年 加班.txt" class="titDefaultName">2013年 加班.txt</em>
</div>
<div class="mid">2014/9/24 9:54:00</div>
<div class="right clearfix">
<a value="253040" class="moveUpBtn" href="javascript:;"><span class="delTit">上移</span></a>
<a value="253040" class="moveDownBtn" href="javascript:;"><span class="delTit">下移</span></a>
<a value="253040" class="deleteBtn" href="javascript:;"><span class="delTit">删除</span></a>
</div>
</div>
</li>
<li class="courseList">
<div class="titDefault clearfix">
<div class="left clearfix">
<span class="dragBtn"></span><span class="tit">内容<em class="contIndex">2</em>:</span><em title="使用说明.txt" class="titDefaultName">使用说明.txt</em>
</div>
<div class="mid">2014/9/24 9:54:00</div>
<div class="right clearfix"> <a value="253041" class="moveUpBtn" href="javascript:;"><span class="delTit">上移</span></a>
<a value="253041" class="moveDownBtn" href="javascript:;"><span class="delTit">下移</span></a>
<a value="253041" class="deleteBtn" href="javascript:;"><span class="delTit">删除</span></a>
</div>
</div>
</li>
<li class="courseList">
<div class="titDefault clearfix">
<div class="left clearfix">
<span class="dragBtn"></span><span class="tit">内容<em class="contIndex">3</em>:</span><em title="占占大师.txt" class="titDefaultName">占占大师.txt</em>
</div>
<div class="mid">2014/9/24 9:54:00</div>
<div class="right clearfix">
<a value="253040" class="moveUpBtn" href="javascript:;"><span class="delTit">上移</span></a>
<a value="253040" class="moveDownBtn" href="javascript:;"><span class="delTit">下移</span></a>
<a value="253040" class="deleteBtn" href="javascript:;"><span class="delTit">删除</span></a>
</div>
</div>
</li>
<li class="courseList">
<div class="titDefault clearfix">
<div class="left clearfix">
<span class="dragBtn"></span><span class="tit">内容<em class="contIndex">4</em>:</span><em title="排序问题.txt" class="titDefaultName">排序问题.txt</em>
</div>
<div class="mid">2014/9/24 9:54:00</div>
<div class="right clearfix"> <a value="253041" class="moveUpBtn" href="javascript:;"><span class="delTit">上移</span></a>
<a value="253041" class="moveDownBtn" href="javascript:;"><span class="delTit">下移</span></a>
<a value="253041" class="deleteBtn" href="javascript:;"><span class="delTit">删除</span></a>
</div>
</div>
</li>
</ul>
下面我们主要看一下JS代码,主要使用JQ的on方法实现的,原因是因为列表的数据有第一次为静态的(bind),当排序后,数据变为动态的(live),所以,这种结构只能使用on才最合理,看一下代码
<script type="text/ecmascript">
$(function () {
//上移
$(".clearfix").on("click", ".moveUpBtn", function () {
var self = $(this);
var _old = self.closest("li.courseList");
var _new = self.closest("li.courseList").prev("li");
if (_new.length > 0) {
var _temp = _old.html();
_old.empty().append(_new.html());
_new.empty().append(_temp);
} }); //下移
$(".clearfix").on("click", ".moveDownBtn", function () {
var self = $(this);
var _old = self.closest("li.courseList");
var _new = self.closest("li.courseList").next("li");
if (_new.length > 0) {
var _temp = _old.html();
_old.empty().append(_new.html());
_new.empty().append(_temp);
}
}); //删除
$(".clearfix").on("click", ".deleteBtn", function () {
var self = $(this);//当前click事件源对象
self.closest("li.courseList").remove();
}); });
</script>
运行之后,效果就出来了,本JS中没有把与后台交互的AJAX方法写出来,大家可以根据具体情况而定。
js~一个列表中包含上移下移删除等功能的更多相关文章
- 在Python的列表中利用remove()方法删除元素的教程
在Python的列表中利用remove()方法删除元素的教程 这篇文章主要介绍了在Python的列表中利用remove()方法删除元素的教程,是Python入门中的基础知识,注意其和pop()方法的区 ...
- Django查询一个权限中包含哪些用户
Django查询一个权限中包含哪些用户 Django的Permission对象中没有直接查询相关用户的信息,而都是通过User对象来查询某个用户有哪些权限,例如: user.objects.get(u ...
- Day10 - JS 实现 Checkbox 中按住 Shift 的多选功能
Day10 - JS 实现 Checkbox 中按住 Shift 的多选功能 作者:liyuechun 简介:JavaScript30 是 Wes Bos 推出的一个 30 天挑战.项目免费提供了 3 ...
- JAVA ArrayList实现随机生成数字,并把偶数放入一个列表中
package Code429; import java.util.ArrayList;import java.util.Random; public class CodeArrayListPrint ...
- Python3基础 set() 删除一个列表中的重复项
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- Python3基础 使用for循环 删除一个列表中的重复项
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- 利用JS将页面中包含“一个”字段值的元素改为红色
document.body.innerHTML = document.body.innerHTML.replace(/一个/ig,"<span style='color: red;'& ...
- Python3基础 把一个列表中内容给另外一个列表,形成两个独立的列表
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- Python3基础 print 查看一个列表中存储的所有内容
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
随机推荐
- UILongPressGestureRecognizer的selector多次调用解决方法
当你使用longPress gesture recognizer 时,你可能会发现调用了多次. UILongPressGestureRecognizer *longPress = [[UILongPr ...
- WPF之核心面板(容器)控件简单介绍
一.Canvas 1.官方表述:定义一个区域,在该区域中可以使用相对于该区域的坐标显式定位子元素. 2.对于canvas 的元素的位置,是靠控件的大小及Canvas.Top.Canvas.Left.C ...
- apache-php安装mysql简单方法
1.启用mysql功能,在php.ini中 extension=php_mysql.dll extension=php_mysqli.dll 2. 修改extension_dir = "ex ...
- newman安装时遇到问题的解决
npm安装newman时系统提示需要安装.net framwork环境 通过查询文档安装visual studio express: 于是安装visual studio 2012 express. 安 ...
- sdk manager更新失败,显示Download interrupted: read timed out,应该如何解决?
今天开始第一天学习Android,就遇到一个大问题.sdk manager无法自动更新,总在提示超时!!! 经过网上查询发现问题原因是. 在利用android sdk manager更新时失败,具体情 ...
- 通过搭建一个精简的C语言开发环境了解一个C程序的执行过程
一.如何搭建一个精简的C语言开发环境 准备:下载TC2.0,并解压,比如说“d:\tc2.0\tc”目录 1.在C盘建立一个目录minic c:\ md minic 2.从解压的目录中将以下文件拷贝到 ...
- uboot的jumptable_init函数分析
一.函数说明 函数功能:安装系统函数指针 函数位置:common/exports.c 二.函数分析 void jumptable_init (void) { int i; gd->jt = (v ...
- iOS中浅淡UIApplication单例-b
在iOS的操作系统中 每一个程序都对应一个application单例,每一个application都对应一个Appdelegate代理,在代理中控制程序的各个状态.我们在程序中获取Applicatio ...
- How to solve "The specified service has been marked for deletion" error
There may be several causes which lead to the service being stuck in “marked for deletion”. Microsof ...
- MongoDB入门简介
MongoDB入门简介 http://blog.csdn.net/lolinzhang/article/details/4353699 有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大 ...