前端Tippy.js组件 配置 Button点击事件

         先看需求,这是一个日程的模块,在日历的上面,我选择了tippy.js做鼠标移入弹窗

        需求是在弹窗里我需要一个按钮,做详情的一个查看和跳转,当时觉得不就是加一个按钮做跳转,当看完文档后,发现并没有相关的实例,都是只针对tippy的一些配置api

        

        

 tippy.js中所显示的文字都可以自定义以content来显示

Calenddata.value.map(v=>{
      if(id == v.id){
        calendar_state = v.calendar_state
        content = v.content
        start = v.start
        end = v.end
        col = v.color
      }
    })
    tippy(info.el, {
      theme:'custom',//主题选取 自定义
      // content:content,
      content:"<div style='width: 100%;'>" +
        "<div style='font-weight: 600;text-align: center;line-height: 20px;color:"+col+"'>"+calendar_state+"</div>" +
        "<div style='border-bottom: 2px solid;font-weight: 600;text-align: center;line-height: 20px;color:"+col+"'>"+info.event.title+"</div>" +
        "<div style='font-weight: 400;'>开始时间:"+start+"</div>" +
        "<div style='font-weight: 400;'>结束时间:"+end+"</div>" +
        // "<div style='color: #666666'>成员:"+eve.remember+"</div>" +
        "<div style='font-weight: 400;display: -webkit-box;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;-webkit-box-orient: vertical;-webkit-line-clamp: 2;' >日程:"+content+"</div>" + "</div>",
      followCursor:'initial',
      interactive: true,
      animation: 'scale',
      allowHTML: true,    //为true的时候,可以识别content中的html
});

这是我配置的弹窗,发现自定义可以写html,那就干脆扔一个按钮上去

content:"<div style='width: 100%;'>" +
        "<div style='font-weight: 600;text-align: center;line-height: 20px;color:"+col+"'>"+calendar_state+"</div>" +
        "<div style='border-bottom: 2px solid;font-weight: 600;text-align: center;line-height: 20px;color:"+col+"'>"+info.event.title+"</div>" +
        "<div style='font-weight: 400;'>开始时间:"+start+"</div>" +
        "<div style='font-weight: 400;'>结束时间:"+end+"</div>" +
        // "<div style='color: #666666'>成员:"+eve.remember+"</div>" +
        "<div style='font-weight: 400;display: -webkit-box;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;-webkit-box-orient: vertical;-webkit-line-clamp: 2;' >日程:"+content+"</div>" + 
        "<div style='text-align: center;color:#fff'><button class='btn_click' style='width:35%;height:30px;border:none;border-radius:10px;background:"+col+";'>查看详情</button></div>",

因为我的弹窗是配置在日历的组件中,所以获取dom元素也要在日历的配置项中写

setTimeout(()=>{
   var btn_click = document.querySelector(".btn_click")
   btn_click.onclick = function (){
     router.findComName("prompting")
   }
}, 200)

我这里用了一个setTimeout,主要是弹窗覆盖了我的日历,点击后会穿透弹窗触发日历的点击事件

最后也完成的需求,不知道我的这种方式你们能不能接受        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值