layui动态绑定事件的方法


Posted in Javascript onSeptember 20, 2019

Tips:很多前端新手会遇到动态创建DOM(html片段)的场景,原来的点击事件无法生效。以及成熟的layui框架动态创建DOM(html片段)不知道如何解决,接下来为大家解释其实现的原理,是主要是通过es6的写法。

一、常规动态创建DOM(html片段)

<!--.html代码片段-->
<!--按钮-->
<button class="data-set" type="button">添加</button>
<!--动态创建的位置-->
<div class="setBox" data-uid="setBox"></div>

<!--jQ代码片段-->
 $(function(){//初始化
  var setBox=$('.setBox');//获取动态添加对象
  $('.data-set').on('click',function () {

    var _html3=`
    <div class="info"> <admin:text  value=""     class="timeInterval" /> <span class="del"> 删除</span> </div>
    `;//此处用es6的方式拼接需要动态创建的代码(模板)
    setBox.append(_html3);//append方法将_html3动态添加到setBox内
    //$('.timeInterval').focus();//聚焦(如果是layui框架会有小bug,用户要先失去焦点再点一次才能调用layui方法)
   });

  $('body').on('click','.del',function () {//事件委托,请看下方注释
    $(this).parents('.info').hide();//模拟前端删除按钮
   });
 })

Tips:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。这也是解决动态创建HTML片段点击事件无法生效的原因。body是父级,即DOM本就存在的对象,但是考虑到兼容性,移动端IOS不支持body作为事件绑定的对象,本文的解决方案是将body改为.setBox即可完美实现事件委托。

效果图如下:

layui动态绑定事件的方法

Tips:绿色框内为初始状态,红色框内为点击添加后实现的模型

二、layui动态绑定事件

1.框架的引入和实例化

自行引入layui.css和layui.js,初始化或者实例化laydate,如果没有这些操作可是会报错的哦。

layui.use('laydate', function(){
  var laydate = layui.laydate;
})

2.html代码片段

<b>禁止交易时间点击日历增加</b>
<!--按钮-->
<p class="data-stop">添加</p>
<!--动态创建的位置-->
<div class="stopBox"></div>

tips:此处的p标签为按钮,样式自行修改

3.js代码片段

var stopBox=$('.stopBox');
  var test=0;//定义一个变量,用于动态创建类名
  $('.data-stop').on('click',function () {
   test=test+1;//防止类名重复
   var _html2=`<div class="info"><admin:text value="" len="250" class="stop${test}"/> <span class="del"> 删除</span></div>`;//(关键)此处用es6的方式拼接需要动态创建的代码(模板),若不是es6的写法$(test)无法识别,需要用“+test+”的方式去拼接。
 stopBox.append(_html2);//实现代码片段动态添加
  //(关键)执行一个laydate实例,如果不执行实例化,无法给动态添加的DOM节点绑定方法
  laydate.render({
   elem: '.stop'+test //指定元素,test为变量
  });
  //$('.stop'+test).focus();//建议不使用聚焦,否则用户体验感不佳
 });

  //交易时间删除按钮
  $('body').on('click','.del',function () {
   $(this).parents('.info').hide();//模拟删除
  });

效果图如下:

layui动态绑定事件的方法

layui动态绑定事件的方法

以上这篇layui动态绑定事件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
浅谈js中的闭包
Mar 16 Javascript
JavaScript中for循环的使用详解
Jun 03 Javascript
js一维数组、多维数组和对象的混合使用方法
Apr 03 Javascript
H5移动端适配 Flexible方案
Oct 24 Javascript
vue基于Vue2.0和高德地图的地图组件实例
Apr 28 Javascript
JavaScript实现图片切换效果
Aug 12 Javascript
动态加载权限管理模块中的Vue组件
Jan 16 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
Dec 06 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
Dec 02 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
Dec 24 Javascript
Vue组件基础用法详解
Feb 05 Javascript
vue中音频wavesurfer.js的使用方法
Feb 20 Vue.js
利用JS代码自动删除稿件的普通弹幕功能
Sep 20 #Javascript
基于layui table返回的值的多级嵌套的解决方法
Sep 19 #Javascript
layui默认选中table的CheckBox复选框方法
Sep 19 #Javascript
layui 数据表格复选框实现单选功能的例子
Sep 19 #Javascript
基于layui的table插件进行复选框联动功能的实现方法
Sep 19 #Javascript
解决layui的table插件无法多层级获取json数据的问题
Sep 19 #Javascript
Layui数据表格 前后端json数据接收的方法
Sep 19 #Javascript
You might like
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
python不带重复的全排列代码
2013/08/13 Python
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
举例讲解Python中is和id的用法
2015/04/03 Python
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
python3 实现调用串口功能
2019/12/26 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
介绍下static、final、abstract区别
2015/01/30 面试题
运动会通讯稿400字
2014/01/28 职场文书
班主任新年寄语
2014/04/04 职场文书
绿色环保演讲稿
2014/05/10 职场文书
企业宣传工作方案
2014/06/02 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL
Docker部署Mysql8的实现步骤
2022/07/07 Servers