JS~一个列表中包含上移下移删除等功能

最近做了一个项目,包括了一个列表页,为了用户体验,操作均使用JS实现,其中包括在列表中实现上移,下移,删除等功能,前台JS,后端数据修改使用AJAX,本文主要说一下前台JS这块

先看一下页面的截图

看一下它的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方法写出来,大家可以根据具体情况而定。

时间: 2024-10-13 16:17:50

JS~一个列表中包含上移下移删除等功能的相关文章

利用jQuery操作select列表选项的上移下移示例

导读:本文实现了一个简单的select列表选项的上移下移操作,可帮助读者了解jQuery选择器,节点操作的一些常用方法 实现的效果: 分享代码: 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="MoveNode_Default" %> 2 3 <!DOCTYPE html PUBLIC &

jquery行上移下移删除

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

将一个列表的数据复制到另一个列表中

1 ''' 2 提问:将一个列表的数据复制到另一个列表中. 3 请仔细看要求,这里要求的是复制数据到一个新的列表中. 4 Python列表数据复制,Python解题思路分析:可以了解下[ :]的含义 5 ''' 6 l = [1,2,3,4] 7 x = l[:] # x = l.copy() 8 print(x) 原文地址:https://www.cnblogs.com/JerryZao/p/8678880.html

练习七:列表复制(将一个列表的数据复制到另一个列表中)

习题七:将一个列表的数据复制到另一个列表中. 1 list1 = [1,2,3,4,5,8] 2 3 list2 = list1[:] #直接赋值,使用: 浅复制 4 5 list3 = list1 #直接赋值,相当于浅复制 6 7 import copy #使用copy模块,深复制 8 list4 = copy.copy(list1) 9 10 list5 = list1.copy() #使用copy函数 潜复制 11 12 print(list1,list2,list3,list4,list

RTL基本知识:如何正确在敏感信号列表中包含function中的信号

在使用Verilog建模组合逻辑时,经常会使用"@*"的方式实现将进程中素有输入信号隐含加入到敏感信号列表中.但是如果该进程中包含对函数的引用时,尽管使用"@*",综合前后的仿真结果还是有出现不一致的情况.本文将对此进行示例说明. 1  问题示例 Verilog中可以在always后使用"@*"来代替冗长的敏感信号列表,这样做虽然在一定程度上可以保证仿真和综合的一致性,但是在一些情况下并不完全正确.例如下例,其中的函数引用了全局变量start,期

返回(统计)一个列表中出现次数最多的元素

首先定义一个函数 函数内逐行依次解释为: #定义一个函数def max1(lt): dict1 = {} #建立一个空字典 s = set(lt) #列表去重 for i in s: #遍历集合(也可以遍历列表,上面一行改成s = list(set(lt))即可) ct = lt.count(i) #检测i元素在lt列表中的次数(count函数) dict1[i] = ct #将i元素作为字典键+i元素的次数值作为值存到字典中 '''下面这一行代码:用max(dict1,key=dict1.ge

Python列表中包含中文时输出十六进制转中文的小方法

现象:列表中的中文打印出来后显示为十六进制 >>> lt=['大神','zhzhgo'] >>> print lt ['\xb4\xf3\xc9\xf1', 'zhzhgo'] >>> 首先需要明确,这不是乱码,这是 unicode 字符串在内存中的形式,python 在命令行界面输出的数据,如果不是ASCII码,则会以十六进制形式输出. 如何使打印出来的结果显示为中文呢?解决办法如下: #-*-coding:utf-8-*- lt=["大神

Python3基础 set() 删除一个列表中的重复项

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: #创建具有重复元素的列表 list1=list([1,2,3,4,5,5,6,6,6]) #将列表转成集合,重复的元素自动消除 set1=set(list1) #将元素转为列表 list1=list(set1) print(list1) #大合集,你看得懂吗,好看吗? 还是上面

Python3基础 使用for循环 删除一个列表中的重复项

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: num=[1,2,3,4,5,6,6,7,8] res=[] for each in num : if each not in res : res.append(each) print(res) #有趣有趣,这么写基础的机制与方法,可以写出如此优美的函数 #小甲鱼 强悍 res