5-2 复制才能拖拽的理解
实现代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>使用拖拽更改支付宝的默认付款方式</title>
<style type="text/css">
body {
background: #eee;
}
h3 {
text-align: center;
}
ul {
list-style: none;
position: relative;
margin-left: -180px;
left: 50%;
}
li {
display: block;
height: 30px;
width: 200px;
border: 1px dashed #bbb;
line-height: 30px;
}
.hidden {
display: none;
}
</style>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<h3>使用拖拽更改支付宝的默认付款方式</h3>
<ul id="card">
<li draggrable="true">招商信用卡</li>
<li draggrable="true">交通信用卡</li>
<li draggrable="true">中信储蓄卡</li>
<li draggrable="true">建行储蓄卡</li>
<li draggrable="true">蚂蚁花呗</li>
<li draggrable="true">余额宝</li>
<li draggrable="true">余额</li>
</ul>
<img src="http://img1.sycdn.imooc.com/climg//59705a7b0001736902000080.png" class="hidden">
<script>
(function($) {
var dragSrc;
$('li').each(function(index, ele) {
$(ele).on('dragstart', function(e) {
dragSrc = this;
e.originalEvent.dataTransfer.setData('text/html', this.innerHTML);
e.originalEvent.dataTransfer.setDragImage($('img').clone().removeClass('hidden')[0], 0, 0);
}).on('dragover', function(e) {
e.preventDefault();
}).on('drop', function(e) {
if (dragSrc != this) {
dragSrc.innerHTML = this.innerHTML;
this.innerHTML = e.originalEvent.dataTransfer.getData('text/html');
}
});
})
})(jQuery);
</script>
</body>
</html>代码效果:

显然,这个最终的实现效果和给出的实例有很大的差别,需要选中要拖拽的文字,才能实现拖拽;
我觉得出现这个问题的原因是,我们实现这个案例借鉴的代码原型是拖拽拼图,在拼图案例中,因为li中的内容是img标签,所以在交换的时候,直接使用innerHTML交换即可实现图片的拖拽的交换;
但是这个案例中li的内容是文字,所以innerHTML获取的必然是文字,所以拖拽的时候才会出现选中才能拖拽的状况;
以上是我的推断,而且我还没有想到该怎么写来实现演示案例;
所以希望写出来的同学可以指点一下;
26
收起
正在回答 回答被采纳积分+1
3回答
慕先生2197846
2018-07-05 18:26:20
学习了新东西
组件化思想开发电商网页 18版
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程



恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星