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 相关文章推荐
jQuery通过扩展实现抖动效果的方法
Mar 11 Javascript
js闭包实现按秒计数
Apr 23 Javascript
javascript函数特点实例分析
May 14 Javascript
javascript中类的定义方式详解(四种方式)
Dec 22 Javascript
js实现的彩色方块飞舞奇幻效果
Jan 27 Javascript
Javascript点击按钮随机改变数字与其颜色
Sep 01 Javascript
详解jQuery简单的表单应用
Dec 16 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
May 24 Javascript
简单实现vue验证码60秒倒计时功能
Oct 11 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
Oct 14 jQuery
微信小程序实现文字无限轮播效果
Dec 28 Javascript
Vue的列表之渲染,排序,过滤详解
Feb 24 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
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
js宝典学习笔记(上)
2007/01/10 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
python如何解析配置文件并应用到项目中
2019/06/27 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
python实现吃苹果小游戏
2020/03/21 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
在PyCharm中安装PaddlePaddle的方法
2021/02/05 Python
教学器材管理制度
2014/01/26 职场文书
大学生工作自荐书
2014/06/16 职场文书
质量保证书格式模板
2015/02/27 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python