首页 > 前端
JQ+html5拖动效果
来源:TP课堂 时间:2021-11-12 点击:745

拖动代码,效果棒棒的,如果是表格,直接换上tr就可以


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://www.aarpress.com/static/index/js/jquery-3.4.1.min.js"></script>
</head>

<body>

    <style>
        .box {
            width: 500px;
            display: flex;
            flex-wrap: wrap;
        }

        .box .item {
            background: #eee;
            width: 500px;
            text-align: center;
            padding: 10px;
            margin: 20px 0;
        }
    </style>
    <div class="box">
        <div class="item" id="1">1</div>
        <div class="item" id="2">2</div>
        <div class="item" id="3">3</div>
        <div class="item" id="4">4</div>
        <div class="item" id="5">5</div>
    </div>

    <script>
        $(function () {

            $(".item").attr("draggable", true); // 为对象添加可拖拽属性
            console.log($("tbody tr"))
            // 拖动对象
            $(".item").bind("dragstart", function (event) { //dragstart 拖动时触发
                var originalEvent = event.originalEvent;
                originalEvent.dataTransfer.setData("srcDomId", originalEvent.target.id);
                $(this).addClass("dragClass");
            }).bind("dragend", function (event) { //dragend  户完成元素拖动后触发
                var originalEvent = event.originalEvent;
                $(this).removeClass("dragClass");
            });
            // 拖动时经过对象
            $(".item").bind("dragover", function (event) {
                if ($(this).is("tr")) {
                    console.log($(this).attr("id"));
                    $(this).addClass("overClass");
                }
                event.preventDefault(); // dragover 默认情况下,数据/元素不能在其他元素中被拖放。对于drop我们必须防止元素的默认处理
            });
            //拖动时经过对象
            $(".item").bind("dragleave", function (event) { //
                $(this).removeClass("overClass");
                event.preventDefault();
            });
            // 放置区域对象
            $(".item").bind("drop", function (event) {
                var originalEvent = event.originalEvent;
                var srcDomId = originalEvent.dataTransfer.getData("srcDomId");
                $(this).removeClass("overClass");
                if ($(this).attr("id") != srcDomId) {
                    $(this).before($("#" + srcDomId).detach());
                }
                event.preventDefault();

            });
        });
    </script>

</body>

</html>