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

 拖拽的时候把一个标签拖动到另一个框,且这个框里已经有元素的话,不可再拖进去。

实现原理就是自定义属性,每次拖完去重置属性,标签有属性的不可再拖进去

支持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>

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值