美文网首页
draggable 拖拽 把一个标签拖到另一个框

draggable 拖拽 把一个标签拖到另一个框

作者: 文芬 | 来源:发表于2020-11-20 13:57 被阅读0次

拖拽的时候把一个标签拖动到另一个框,且这个框里已经有元素的话,不可再拖进去。
实现原理就是自定义属性,每次拖完去重置属性,标签有属性的不可再拖进去
支持i9及i9+

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            .fl{float: left;}
            ul li,ul.a {
            line-height: 30px;
            display: block;
            text-align: left;
            width: 200px;
            cursor: pointer;
            border: 1px solid #ccc;
            margin-top: 15px;
            height: 30px;
            background: #F0EFEF;
            border-radius: 5px;
        }
        
        </style>
    </head>
    <body>
        <ul class="fl" ondrop="drop(event)" ondragover="allowDrop(event)" id="teamName">
            <li ondrop="drop(event)" ondragover="allowDrop(event)" >
                <span id="0left2"  draggable="true" ondragstart="drag(event)" >7845454521</span>
            </li>
            <li ondrop="drop(event)" ondragover="allowDrop(event)" >
                <span id="0left3"  draggable="true" ondragstart="drag(event)" >121231212</span>
            </li>
        </ul>
        <div class="clum clearfix fl">
            <ul class="a" ondrop="drop(event)" ondragover="allowDrop(event)" data-drop-done="1">
                
            </ul>
            <ul class="a" ondrop="drop(event)" ondragover="allowDrop(event)" data-drop-done="1">
                
            </ul>
        </div>
    </body>
</html>
<script src="jquery-1.11.1.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
    //清除浏览器默认事件
    function allowDrop(ev) {
        ev.preventDefault();
    }
    //把可拖动元素set
    function drag(ev) {
        ev.dataTransfer.setData("Text", ev.target.id);
    }
    //有元素不能再拖进去
    function drop(ev) {
        if (ev.target.getAttribute('data-drop-done') == "1") {
            var data = ev.dataTransfer.getData("Text");
    
            ev.target.appendChild(document.getElementById(data));
    
            ev.target.setAttribute('data-drop-done', "");
            setAttr();
        }
    }
    
    // 重置可拖入的属性
    function setAttr() {
        $.each($('.clum ul'), function(i, val) {
            var hasChild = $(this).children().length>0 ? true : false;
            if (!hasChild) {
                $(this).attr('data-drop-done', 1);
            };
        })
        $.each($('#teamName  li'), function(i, val) {
            
            var hasChild = $(this).children().length>0 ? true : false;
            
            if (!hasChild) {
                $(this).attr('data-drop-done', 1);
            };
        })
    }
</script>

相关文章

  • draggable 拖拽 把一个标签拖到另一个框

    拖拽的时候把一个标签拖动到另一个框,且这个框里已经有元素的话,不可再拖进去。实现原理就是自定义属性,每次拖完去重置...

  • h5-API

    拖拽API 属性 draggable 设置为 draggable=true 可以被拖拽 拖拽事件 ondragst...

  • Flutter-26- Draggable控件

    提供了强大的拖拽控件,可以灵活定制 Draggable Widget Draggable控件负责就是拖拽,父层使用...

  • 元素拖曳 H5

    拖拽 如何让一个元素变成拖拽元素 draggable=‘true’ ondrag 应用于拖拽元素,整个拖拽过程都会...

  • vue,iview遇到的问题(1)

    1 vue draggable 火狐拖拽搜索问题使用vue-draggable做字段拖拽排序,在谷歌浏览器上是没有...

  • 01-H5拖拽

    属性 draggable='true' 事件 ondragstart 开始拖拽 ondrag 正在拖拽 ondra...

  • 拖拽事件

    拖拽事件 draggable 规定盒子是否能拖拽 true 可以 false 不行ondragstart 开始拖拽...

  • H5新增API

    拖拽API 属性 draggable 设置为true 可以被拖拽 拖拽事件 ondragstart 开始被拖动...

  • HTML5新增API

    拖拽API 属性 draggable 设置为true 可以被拖拽 拖拽事件 ondragstart 开始被拖动...

  • Flutter中Draggable的简单使用

    Draggable 是Flutter中一个可以拖拽到DragTarget的widget,同时他可以把自己带有的数据...

网友评论

      本文标题:draggable 拖拽 把一个标签拖到另一个框

      本文链接:https://www.haomeiwen.com/subject/cwpdiktx.html