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 相关文章推荐
再次分享18个非常棒的jQuery表格插件
Apr 10 Javascript
JavaScript替换当前页面的方法
Apr 03 Javascript
jquery validate demo 基础
Oct 29 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
jQuery事件对象总结
Oct 17 Javascript
AngularJS报错$apply already in progress的解决方法分析
Jan 30 Javascript
深入理解Javascript箭头函数中的this
Feb 13 Javascript
JS中使用正则表达式g模式和非g模式的区别
Apr 01 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
May 12 Javascript
vue通过style或者class改变样式的实例代码
Oct 30 Javascript
微信小程序调用后台service教程详解
Nov 06 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 07 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自带的进位制之间的转换函数
2013/06/08 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
php 删除cookie方法详解
2014/12/01 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
js操作select控件的几种方法
2010/06/02 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
jQuery Checkbox 全选 反选的简单实例
2016/11/29 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
javascript中数组的常用算法深入分析
2019/03/12 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
5款非常棒的Python工具
2018/01/05 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
Python将list元素转存为CSV文件的实现
2020/11/16 Python
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
实习公司领导推荐函
2014/05/21 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
辞职信的写法
2015/02/27 职场文书
python实现简单的井字棋
2021/05/26 Python