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+Ajax+Json的高效分页实现代码
Oct 29 Javascript
jQuery页面加载初始化常用的三种方法
Jun 04 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
Jun 10 Javascript
JS在可编辑的div中的光标位置插入内容的方法
Nov 20 Javascript
Javascript基础教程之argument 详解
Jan 18 Javascript
利用vue写todolist单页应用
Dec 15 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
Jun 19 Javascript
BootStrap模态框不垂直居中的解决方法
Oct 19 Javascript
基于Vue实现拖拽功能
Jul 29 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
Nov 08 Javascript
微信小程序页面缩放式侧滑效果的实现代码
Nov 15 Javascript
js实现全选和全不选功能
Jul 28 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和ACCESS写聊天室(七)
2006/10/09 PHP
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
PHP PDO数据库操作预处理与注意事项
2019/03/16 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
vue.js表格分页示例
2016/10/18 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
vue引入swiper插件的使用实例
2017/07/19 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
js实现点赞效果
2020/03/16 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
Django封装交互接口代码
2020/07/12 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
校园环保标语
2014/06/13 职场文书
元旦晚会活动总结
2014/07/09 职场文书
升职自我推荐信范文
2015/03/25 职场文书