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 相关文章推荐
使用JavaScript 实现各种跨域的方法
May 08 Javascript
js字符串转成JSON
Nov 07 Javascript
常用的JavaScript验证正则表达式汇总
Nov 26 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
Jun 03 Javascript
jQuery表格插件datatables用法总结
Sep 05 Javascript
javascript事件冒泡实例分析
May 13 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
Jun 05 Javascript
JS+CSS实现DIV层的展开、收缩效果
Jan 28 Javascript
js中数组的常用方法小结
Dec 30 Javascript
JS实现图片放大缩小的方法
Feb 15 Javascript
解决Mac node版本升级失败的问题
May 16 Javascript
vue-cli3.0配置及使用注意事项详解
Sep 05 Javascript
利用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
PHP 实现页面静态化的几种方法
2017/07/23 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
js 加载时自动调整图片大小
2008/05/28 Javascript
优化javascript的执行速度
2010/01/23 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
python版大富翁源代码分享
2018/11/19 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
建筑工地大门标语
2014/06/18 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python