当jQuery动态添加遇到laydate

jQuery动态添加laydate解决方案

今天做项目的某个模块功能,需要jQuery动态添加laydate来实现,上图:
在这里插入图片描述
每点击添加一次就要生成一个laydate框,开始直接绑定css实现,发现已有的输入框可以正常弹出laydate,但是点击添加按钮生成出来的却没反应,在网上找了好久,还学到了一个前端名词事件委托(本人搞java的不懂这些,见笑了),然后尝试用事件委托来实现,初次尝试如下(#timediv为laydate框最外层包裹的div):
在这里插入图片描述
发现确实可以显示,但是会闪一下,然后在layUI官网看到一个小姐姐是这样写的:
在这里插入图片描述
这样比上面好很多,可以直接点击就显示,但是还是不完美,弹出的时间选择框会抖动一下,后面发现有大佬在layUI论坛是这样做的,每次动态生成时,写laydate渲染一次,完美解决这个问题,如下:

layui.use(['form', 'table', 'laydate', 'layer', 'upload'], function () {
    var form = layui.form,
        table = layui.table,
        laydate = layui.laydate,
        layer = layui.layer,
        upload = layui.upload;
    var $ = layui.jquery;
    
     //时间选择器
      lay(".advanceDate").each(function(){ 
    	laydate.render({ 
    	elem: this 
    	,type: 'time'
    	,format: 'HH:mm'
      }); 
  	}); 
        
     //动态添加
    $("#add").click(function(){ 
        $("#timediv").append('<input style="margin-bottom:5px;" type="text"  name="addTitle" placeholder="请选择活动开始时间" lay-verify="required" lay-reqtext="活动开始时间不能为空"  autocomplete="off" class="layui-input advanceDate">'); 

         lay(".advanceDate").each(function(){ 
        	laydate.render({ 
        	elem: this 
        	,type: 'time'
        	,format: 'HH:mm'
        	,trigger: 'click'     //点击触发
          }); 
      	});  
    });  

})

jQuery动态生成时渲染,必须加上trigger: ‘click’,不然会弹出时间选择框会闪一下

就说到这里,因为花了很长时间来解决(毕竟咱是干后端的),来给大家分享一下,也是处女作哦

参考链接
https://fly.layui.com/jie/15185/
https://blog.csdn.net/MrLiber/article/details/82626427
http://fly.layui.com/jie/18089/
https://blog.csdn.net/kingrome2017/article/details/79769652

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值