拖拽Apl的简单使用

使用前需设置必要的属性draggable

<div class="drag" draggable="true"></div>

其包含的事件:

1.drag:当拖拽元素或选中的文本时触发.

2.dragstart:当用户开始拖拽一个元素或选中的文本时触发.

3.dragend:当拖拽操作结束时触发 (比如松开鼠标按键或敲“Esc”键)

4.dragenter:当拖拽元素或选中的文本到一个可释放目标时触发

5.dragleave:当拖拽元素或选中的文本离开一个可释放目标时触发。

6.dragover:当元素或选中的文本被拖到一个可释放目标上时触发(每 100 毫秒触发一次)

7.drop:当元素或选中的文本在可释放目标上被释放时触发,为确保drop正常使用,最好在前置 dragover事件中禁用默认行为

<div class="drop" ondrog="drop" ondragover.prevent=""></div>

举一个实例

 <div v-for="good in goods":key="good.name" class="class" 
draggable="true" @dragstart="start(event,good)"></div>    
                                        // 若为@dragstart="start"
                                         //打印good将为undefine

 goods:[
    {
        name:"李子",
        price:20,
        src:"./li.jpg"
    },
    {
        name:"桃子",
        price:200,
        src:"./tao.jpg"
    },
    {
        name:"小子",
        price:2000,
        src:"./xiao.jpg"
    }
   ]

start(item,good){
      console.log(item.target) //将打印你拖拽的元素 
     
      item.dataTransfer.setData('key', JSON.stringify(good));
      console.log(JSON.parse(item.dataTransfer.getData("key"))) //若你拖拽的为名为“李子”的{name="李子",price="20",src="./li.jpg"}
    }
//此代码不完整

dataTransfer 事件为drag的属性,setData()能给拖拽的数据添加数据 

可在蓝桥杯前端真题趣购(2426)实践

该题题解:


 computed: {
    totalPrice() {
      let money=0;
      this.bought.forEach((item)=>{
        money += item.price
      })
      return money;
    },
    goodsDetail() {
      let str = ""
      let obj = {1:0}; //通过对象来储存拖拽的物品名以及次数
      this.bought.forEach(item=>{
       for (const key in obj) {
        if(key == item.name){
          obj[key]++;
          break; 
        }
        if(key != item.name){
          obj[item.name] = 1;
        }
       }
       
      })  
      for (const key in obj) {
        if(key!=1){
          str += key+'*'+obj[key]+" "; 
        }
      }
      return str;
    },
  },

  methods: {
    start(item,good){
      item.dataTransfer.setData("key", JSON.stringify(good))
    },
    end(item){
      let a = JSON.parse(item.dataTransfer.getData("key"))
      this.bought.push(a)
    }
  },

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值