为什么还是覆盖,浏览器没有报错

为什么还是覆盖,浏览器没有报错

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>拖拽拼图</title>

<script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>

<style type="text/css">

ul{

width: 600px;

}

li{

list-style-type: none;

width: 200px;

height: 200px;

float: left;

}

</style>

</head>

<body>

<div class="container">

<ul>

<li draggable="true"><img src="images/2.jpg"></li>

<li draggable="true"><img src="images/1.jpg"></li>

<li draggable="true"><img src="images/3.jpg"></li>

<li draggable="true"><img src="images/6.jpg"></li>

<li draggable="true"><img src="images/8.jpg"></li>

<li draggable="true"><img src="images/4.jpg"></li>

<li draggable="true"><img src="images/9.jpg"></li>

<li draggable="true"><img src="images/5.jpg"></li>

<li draggable="true"><img src="images/7.jpg"></li>

</ul>

</div>

<script type="text/javascript">

(function($){

var dragSrc;

$('li').each(function(index,ele){

$(ele).on("dragstart",function(e){

dragSrc =this;

e.originalEvent.dataTransfer.setData("text/html",this.innerHTML);

}).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>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕星星 2019-04-16 18:50:06

同学你好,可以参考下面的解释:

(function($) {

        //定义变量
        var dragSrc;
        //使用each循环所有的li,function参数中index是索引,ele是每一个li元素

        $('li').each(function(index, ele) {
            //给每一个li元素绑定dragstart开始拖拽事件

            $(ele).on("dragstart", function(e) {
                //将当前拖拽的元素赋值给之前定义的变量

                dragSrc = this;
                //将当前拖拽的元素内容,也就是img通过数据传递

                e.originalEvent.dataTransfer.setData("text/html", this.innerHTML);

            }).on("dragover", function(e) {
                //绑定dragover事件,默认是不允许拖放的,然后阻止默认事件
                e.preventDefault();

            }).on("drop", function(e) {
                //绑定drop事件
                //判断如果拖拽的元素与放置的目标元素(也就是当前元素)不相等的话,就执行代码
                if (dragSrc != this) {
                    //将当前元素的内容赋值给拖拽元素的内容

                    dragSrc.innerHTML = this.innerHTML;
                    //将传递过来的数据赋值给当前元素的内容
                    this.innerHTML = e.originalEvent.dataTransfer.getData("text/html");

                }

            });

        })

    })(jQuery);

上一个拖拽案例中已经给同学解释过全部的js代码了,这些拖拽的案例都是相似的,同学是具体哪里不明白吗?可以详细的描述一下,便于准确定位你的问题。

祝学习愉快!

好帮手慕星星 2019-04-16 11:27:49

同学你好,设置innerHTML属性的时候使用点不是逗号哦,如下:

http://img1.sycdn.imooc.com//climg/5cb54bac0001920912340328.jpg

可以重新修改测试下,祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师